?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關鍵字了,參考上面的例子。