一个什么也不做的虚析构函数是
自C++11起,我们可以使用另一种说法:
这两个有什么区别吗?
virtual ~ClassName() {}
自C++11起,我们可以使用另一种说法:
virtual ~ClassName() = default;
这两个有什么区别吗?
virtual ~ClassName() {}
virtual ~ClassName() = default;
N4296
) 8.4、12.1、12.4、12.8)。
例如:8.4.2.5:显式默认函数和隐式声明函数统称为默认函数,实现应为它们提供隐式定义(12.1、12.4、12.8),这可能意味着将它们定义为已删除。
如果您的用途属于已删除的类别之一,则使用12.4.5:如果类X的默认析构函数满足以下条件,则定义为已删除:(5.1) - X是一个类似于union的类,其中具有非平凡析构函数的变体成员,(5.2) - 任何可能构造的子对象都具有类类型M(或其数组),并且M具有已删除的析构函数或从默认析构函数无法访问的析构函数,(5.3) - 或者对于虚拟析构函数,非数组释放函数的查找结果存在二义性或者是一个已删除的函数或从默认析构函数无法访问的函数。
default
将等同于使用delete
,而{}
则不会。
{}
还是= default;
?虚析构函数并不重要,因为这不是问题所在。 - Rakete1111