1.C++ 11添加了两个继承控制关键字:final和override。
- final阻止类的进一步派生,和虚函数的进一步重写
- override确保在派生类中声明的函数跟基类的虚函数有相同的签名(函数返回值、参数个数和类型、函数名)
class A {
void func_1(int a , double b) final {}; //在类的成员函数上加入final关键字,表明该类的派生类中不能再继承该函数
virtual void func_2 (int a, double b) {} final;//虚函数加final,表明该虚函数无法继续被派生类继承
virtual void func_3 (int a, double b) {};
};
class B : public A {
virtual void func_3 (int a, double b) override {}; //在重写虚函数的地方加入override关键字,表明要求重写的虚函数的签名要和基类中一模一样,不允许更改参数列表和返回值;
}
//在类的成员函数上加入final关键字,表明该类的派生类中不能再继承该函数
//在重写虚函数的地方加入override关键字,表明一定要重写基类中的这个虚函数,按重写的要求虚函数签名要和基类中一模一样,不允许更改参数列表和返回值,即不能是重定义
2. 重载、重写和重定义的区别