override 关键字的应用
- 保证在派生类中声明的重载函数,与基类的虚函数有相同的签名
 - 为了减少程序运行时的错误,重写的虚函数都建议加上 override
 - 示例
 
class Base {
public:virtual void Show(int x); // 虚函数
};class Derived : public Base {
public:virtual void Show(int x) const override; // const 属性不一样,新的虚函数,编译时会报错
};
 
final 关键字的应用
- 阻止类的进一步派生 和 虚函数的进一步重写
 - 一旦一个虚函数被声明为final,则派生类不能再重写它
 - 示例
 
class Base {
public:virtual void Show(int x) final; // 虚函数
};class Derived : public Base {
public:virtual void Show(int x) override; // 重写提示错误  
};
 
Notes
- 函数的签名包括:函数名,参数列表,const属性