多态行为的基础是:基类声明一个虚函数,派生类声明一个函数覆盖该函数。
覆盖的要求是函数签名一致。函数签名包括:函数名,参数列表,const
在派生类的函数中声明override,编译器会在编译的过程中检查基类中是否有函数签名一致的虚函数形成多态,否则报错。
在类或者函数中声明final可以避免类被继承,或者函数被覆盖。
示例代码:
struct Base1 final {};
struct Derived : Base1 {}; //错误,不允许被继承
struct Base2 {
void f() final;
};
struct Derived : Base2 {
void f(); //错误,不允许被覆盖
};