类被final修饰,不能被继承
class A1 final { };
class B1 : A1 { }; // “B1”: 无法从“A1”继承,因为它已被声明为“final”
虚函数被final修饰,不能被override
class A1
{
virtual void func() final {}
};
class B1 : A1
{
virtual void func() {} //“A1::func”: 声明为“final”的函数无法被“B1::func”重写
};
被override修饰后如果父类无对应的虚函数则报错,无法override,这个有什么作用呢,假如你想虚继承基类的函数,但是继承的时候写错了,参数类型不对或个数不对,但是编译没问题,运行时候却和你设计的不一样不被调用,override就是编译器辅助你检查是否继承了想要虚继承的函数
struct A1
{
virtual void func(int) {}
};
struct B1 : A1
{
virtual void func(int) override {} // OK
virtual void func(double) override {} // “B1::func”: 包含重写说明符“override”的方法没有重写任何基类方法
};