[英]Default pure virtual destructor
在C ++ 11中,我们可以声明一个自动生成的析构函数:
struct X {
virtual ~X() = default;
};
此外,我们可以声明析构函数是纯虚拟的:
struct X {
virtual ~X() = 0;
};
是我的问题: 既自动生成的如何声明析构函数和纯虚? 看起来以下语法不正确:
struct X {
virtual ~X() = 0 = default;
};
这两个都不是:
struct X {
virtual ~X() = 0, default;
};
也不是这个:
struct X {
virtual ~X() = 0 default;
};
编辑:对问题的目的进行一些澄清。 基本上我想要一个空类是不可实例化的基类,但派生类是可实例化的,那么该类必须具有纯虚拟析构函数。 但另一方面,我不想在.cpp文件中提供定义。 所以我需要一些等同于default
的机制。 我想知道是否有人有想法解决这个问题。
为了定义纯虚方法,您需要从声明中单独定义。
因此:
struct X {
virtual ~X() = 0;
};
X::~X() = default;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.