说明:
final与override脱离了虚函数均无效,所以final与override都是用于修饰虚函数。
一:final
final用于修改虚函数不能被重写。
二:override
override用于修饰虚函数必须被声明。
举个例子1:
class live{
public:
virtual void sleep() = 0;//声明这是一个纯虚函数
};
class people:public
{
public:
void sleep() override{
std::cout << "sleep()" << std::endl;
}
}
以上编译是OK的overide声明的sleep()会去检测live的纯虚函数sleep()是否存在,不存在就报错;
举个例子2:
class live{
public:
virtual void sleep() final;//声明这是不可重写的纯虚函数
};
class people:public
{
public:
void sleep() {
std::cout << "sleep()" << std::endl;//这里就会报错
}
}
以上编译是不行的,final什么存虚函数是不可重写的;