final和override是C++是C++11新引入的两个关键字,让我们来了解一下这两个关键字的作用
final
:final需要放在类
或者虚函数
的后面,如果放在类的后面,指明该类不能够继承(或者说不能有派生类),放在虚函数后面指明该虚函数不能在被重写,最终的实现形式止于该类
override
:明确函数的意图,能够让编辑器帮助你检查重写是否正确(简单来说能防止你打错字),如果不正确编译器就会报错,减少错误的可能,提高可读性
使用这两个关键字能有效的提高代码的可读性并减少出错的可能
使用示例
#include <iostream>
class base {
public:
virtual void func1() {};
virtual void func2() {};
};
class child : public base {
public:
void func1() override {};
void func2() override final{};
};
class GrandChild final : public child {
public:
//void fun3() override {};//错误,与基类声明不一致,无法重写
//void func2() override {};//错误,func2在child中限定为final,无法在子类中重写
};
//class GrandGrandChild : public GrandChild {//错误,GrandChild以及被限定为final,不能重写
//
//};
int main()
{
return 0;
}