C++ final类和override final之间的差异
问题很简单,像这样使用C++ final类和override final之间的差异,c++,inheritance,C++,Inheritance,问题很简单,像这样使用final有什么区别 类基{ 公众: Base(){} 虚拟~Base(){} 虚拟空初始化(){} }; 类派生的final:公共基{ 公众: 派生(){} ~Derived(){} 虚空初始化()重写{} }; 像这样使用覆盖final 类基{ 公众: Base(){} 虚拟~Base(){} 虚拟空初始化(){} }; 派生类:公共基{ 公众: 派生(){} ~Derived(){} 虚空初始化()重写最终{} }; 在方法上使用final确保如果另一个类继承自该类
final
有什么区别
类基{
公众:
Base(){}
虚拟~Base(){}
虚拟空初始化(){}
};
类派生的final:公共基{
公众:
派生(){}
~Derived(){}
虚空初始化()重写{}
};
像这样使用覆盖final
类基{
公众:
Base(){}
虚拟~Base(){}
虚拟空初始化(){}
};
派生类:公共基{
公众:
派生(){}
~Derived(){}
虚空初始化()重写最终{}
};
在方法上使用final确保如果另一个类继承自该类,则不允许它重写该方法
在类上使用final意味着该类根本无法从中派生。在方法上使用final可确保如果另一个类从该类继承,则不允许它重写该方法
在类上使用final意味着该类根本无法派生。第一种情况锁定该类。以下操作将导致错误:
class Derived2 : public Derived{};
第二种情况禁止从它继承的任何类重新定义
final
方法。第一种情况锁定该类。以下操作将导致错误:
class Derived2 : public Derived{};
第二种方法禁止从它继承的任何类重新定义
final
方法。final
on class表示该类不能从中派生<方法上的code>final表示无法在派生类中进一步重写该方法。@IgorTandetnik因此这与对派生类中的所有虚拟函数说override final
相同?否。这样的类仍然可以派生(这样做可能不是特别有用,但仍然可能)。换句话说,类派生:公共派生{}代码>将在第二个示例中编译,并在第一个示例中产生错误。@D-RAJoverride final
是多余的。重写虚拟成员函数时,将其标记为override
以重写并允许在更派生的类中进一步重写,或将其标记为final
以重写并防止进一步重写。类上的final
表示该类不能从中派生<方法上的code>final
表示无法在派生类中进一步重写该方法。@IgorTandetnik因此这与对派生类中的所有虚拟函数说override final
相同?否。这样的类仍然可以派生(这样做可能不是特别有用,但仍然可能)。换句话说,类派生:公共派生{}代码>将在第二个示例中编译,并在第一个示例中产生错误。@D-RAJoverride final
是多余的。重写虚拟成员函数时,将其标记为override
以重写并允许在更派生的类中进一步重写,或将其标记为final
以重写并防止进一步重写。