析构函数是最终的吗? C++标准允许析构函数被声明为最终< /代码>吗?像这样: class Derived: public Base { ... virtual ~Derived() final; }
如果是,这是否会阻止派生类的声明:析构函数是最终的吗? C++标准允许析构函数被声明为最终< /代码>吗?像这样: class Derived: public Base { ... virtual ~Derived() final; },c++,c++11,inheritance,destructor,C++,C++11,Inheritance,Destructor,如果是,这是否会阻止派生类的声明: class FurtherDerived: public Derived {// allowed? } 如果允许,编译器是否可能发出警告?将析构函数声明为final是否是一种可行的习惯用法,用于指示类不打算用作基类 (只有一个派生类。) < P>可以将C++析构函数声明为最终< /代码>? 对 如果是,这是否会阻止派生类的声明: class FurtherDerived: public Derived {// allowed? } 是的,因为派生类
class FurtherDerived: public Derived {// allowed?
}
如果允许,编译器是否可能发出警告?将析构函数声明为final
是否是一种可行的习惯用法,用于指示类不打算用作基类
(只有一个派生类。)
< P>可以将C++析构函数声明为<代码>最终< /代码>?
对
如果是,这是否会阻止派生类的声明:
class FurtherDerived: public Derived {// allowed?
}
是的,因为派生类必须声明析构函数(由您显式声明或由编译器隐式声明),并且该析构函数将重写声明的final
,该函数的格式不正确
规则是:
如果某个B类中的虚拟函数f
标记为virt说明符final
,而在从B类派生的D类中,则为函数D::f
覆盖B::f
,程序格式不正确
推导本身格式不正确,不必使用
将析构函数声明为final是否是一种可行的习惯用法,用于指示类不打算用作基类
有效,但您应该只标记类
final
。这是相当明确的一点 表示一个类不打算用作基类的习惯用法是使该类成为final。如果您打算表示一个类不适合作为继承自,您只需将整个类标记为final即可class Device final:public Base
“…但是您应该只标记类final
”。和。