首先来说下这两个关键字 overrde 和 final 这两个关键字用于c++类的继承控制,
直接上代码:
class AAA
{
public: //首先AAA类声明了3个方法
AAA() {}
virtual void method_1(){}
virtual int method_2(){}
virtual int method_3() = 0;
};
class BBB : public AAA //BBB从AAA类继承
{
public:
virtual void method_1() override{} //override 关键字用于显示的指出 这是在重写基类的virtual方法
virtual int method_2() final{} //禁止子类再继续继承重写这个函数
virtual int method_3() override final{} //同样的禁止子类再继续继承,并显示的指出这是重写的基类的virtual方法
//virtual void method_4() override; //Error:子类并没有这个方法
};
class CCC final: public BBB //CCC继承自BBB ,并且用了final关键字 ,限制了CCC类不可被继承
{
public:
CCC() {}
virtual void method_1() override{} //重写BBB的方法
//virtual int method_2() {} //
//virtual int method_3() {} //Error: 这两个方法都是由final关键字限定无法被继承的
};
//class DDD : public CCC //Error:CCC类由final限定无法被继承
//{
//public:
// DDD() {}
//};