default
来定义纯虚析构函数。而这个问题是关于有什么区别。
在C++(尽可能使用最新的标准)中,使用空体实现定义纯虚析构函数和只使用空体(或默认值)之间的真正区别是什么?
变体1:
class I1 {
public:
virtual ~I1() {}
};
Variant 2.1:
变体2.1:
class I21 {
public:
virtual ~I21() = 0;
};
I21::~I21() {}
变体2.2:
class I22 {
public:
virtual ~I22() = 0;
};
I22::~I22() = default;
更新:我发现Variant 1和Variant 2.1/2.2之间至少有1个区别:
std::is_abstract::value
对于Variant 1是false
,而对于Variant 2.1和2.2是true
。
也许有人能找到2.1和2.2之间的差异吗?