详解C++成员函数的override和final说明符的用法
override 说明符 可使用 override 关键字来指定在基类中重写虚函数的成员函数。 function-declaration override; 备注 class BaseClass { virtual void funcA(); virtual void funcB() const; virtual void funcC(int = 0); void funcD(); }; class DerivedClass: public BaseClass { virtual void funcA(); // ok,works as intended virtual void funcB(); // DerivedClass::funcB() is non-const,so it does not // override BaseClass::funcB() const and it is a new member function virtual void funcC(double = 0.0); // DerivedClass::funcC(double) has a different // parameter type than BaseClass::funcC(int),so // DerivedClass::funcC(double) is a new member function }; 当使用 override 时,编译器会生成错误,而不会在不提示的情况下创建新的成员函数。 class BaseClass { virtual void funcA(); virtual void funcB() const; virtual void funcC(int = 0); void funcD(); }; class DerivedClass: public BaseClass { virtual void funcA() override; // ok virtual void funcB() override; // compiler error: DerivedClass::funcB() does not // override BaseClass::funcB() const virtual void funcC( double = 0.0 ) override; // compiler error: // DerivedClass::funcC(double) does not // override BaseClass::funcC(int) void funcD() override; // compiler error: DerivedClass::funcD() does not // override the non-virtual BaseClass::funcD() };
function-declaration final; class class-name final base-classes 备注 class BaseClass { virtual void func() final; }; class DerivedClass: public BaseClass { virtual void func(); // compiler error: attempting to // override a final function }; 有关如何指定可以重写成员函数的信息,请参阅 override 说明符"。 class BaseClass final { }; class DerivedClass: public BaseClass // compiler error: BaseClass is // marked as non-inheritable { }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |