C ++编译器是否会为此“类”生成默认函数,例如Constructor / Destructor / Copy-Constructor ...?
class IMyInterface
{
virtual void MyInterfaceFunction() = 0;
}
我的意思是不可能实例化此“类”,所以我认为没有默认函数生成。否则,人们会说您必须使用虚拟析构函数。这意味着如果我不定义虚拟的析构函数,它将默认创建,而不是虚拟的。
此外,我想知道为上述纯虚拟接口定义虚拟析构函数是否合理?(因此,此处未使用任何指针或数据,因此无需破坏任何内容)
谢谢。
此外,我想知道为上述纯虚拟接口定义虚拟析构函数是否合理?(因此,此处未使用任何指针或数据,因此无需破坏任何内容)
这不仅合理,而且值得推荐。这是因为在虚拟函数层次结构的情况下,(自动)调用专用类的析构函数还会调用其基类的所有析构函数。如果未定义它们,则应收到链接错误。
如果您在类中定义了至少一个虚拟函数,则还应该定义一个虚拟析构函数。
析构函数可以通过以下方式定义=default
:
这是一个更正(可编译)的代码示例:
class ImyInterface
{
virtual void myInterfaceFunction() = 0;
virtual ~ImyInterface() = 0;
}
ImyInterface::~ImyInterface() = default;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句