C++对函数重写要求比较严格,但是有些情况下由于函数名的字母的次序问题写反而无法重写,这种错误在编译阶段是不会报出的,只有在程序运行时没有得到预期结果才来dabug会得不偿失,因此C++11提供了override和final两个关键字,可以帮助用户检测是否重写。
1.final:修饰虚函数,表示该虚函数不能在被继承
class Car
{
public:
virtual void Drive() final {}
};
class Benz :public Car
{
public:
virtual void Drive() {cout << "Benz-舒适" << endl;}
};
2.override:检查派生类虚函数是否重写了基类中的虚函数,如果没重写编译报错
class Car{
public:
virtual void Drive(){}
};
class Benz :public Car {
public:
virtual void Drive() override {cout << "Benz-舒适" << endl;}
};