注:使用c++11特性需要在.pro文件中添加 C++11
CONFIG += C++11
final 定义方式:
函数:函数类型 函数名称(函数参数) final;
作用:修饰函数,修饰函数后则子类无法重写此函数。
注:函数只能作用于父类为虚函数时。
类:class 类名称 final : public 父类{};
作用:修饰类,修饰类后则无法再生成派生类。
override 定义方式: 函数类型 函数名称(函数参数) override;
作用:用于确保确实对父类的虚函数进行了重新,即没有继承并重新此函数会编译报错。
class GrandPa
{
public:
GrandPa() {}
virtual void TestFinal() = 0;
};
class Father : public GrandPa
{
public:
Father() {}
// override用于确保确实是重写了父类的虚函数,防止由于敲错代码什么的导致的错误,养成好习惯总是不会错的
// 修饰函数 修饰函数后则子类无法重写此函数
void TestFinal()override final{
qDebug() << "father 最后确实继承了 grandPa,son无法再继承。";
}
};
// 修饰类 修饰类后则此类无法再派生类,成了最后一代
class Son final : public Father
{
public:
Son() {}
// void TestFinal(){
// qDebug() << "尝试继承grandPa,但失败了。";
// }
};