Skip to content

override和final

C++ 11中引入了override关键字来说明子类重写父类中虚函数的情况。如果子类的成员函数声明中添加了override关键字,编译器会去父类中找同名且被子类重写了的虚函数(重载的不是),如果没有找到编译器就会报错。这样的机制可以保证你在重写父类中的虚函数的时间不会产生错误(如果写错了编译器就会报错来提示你)。具体使用语法如下:

cpp
//在子类类定义中重写父类中的虚函数
void eat() override;

//子类重写虚函数的类外实现
void Man::eat(){
	//...
}

而final关键字的作用与override恰恰相反,final关键字是父类虚函数专用。如果在父类函数声明中添加了final关键字,子类中就不能再进行相应虚函数的重写操作。具体语法如下:

cpp
void eat() final;

//类外实现
void Human::eat(){
	//...
}