1.final
final 防止子类继承,用于类或虚函数,限制继承或重写
class Base final {}; // Base类不能被继承class Base {
public:virtual void foo() final; // 禁止子类重写foo()
};
2.override
override 子类中重写父类中函数,,仅用于派生类虚函数,强制检查重写正确性
class Base {
public:virtual void foo(int);
};
class Derived : public Base {
public:void foo(int) override; // 明确重写基类虚函数
};
规范: 只有顶层的虚函数加virtual,其他子类在覆写时用override,不用在加virtual关键字了,参考上面的例子。