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属性