默认关键字虚拟析构函数

时间:2014-01-11 15:16:39

标签: c++ c++11

我一直在使用越来越多的C ++ 11,而且我遇到了一些我在任何地方都找不到的东西。当我们从基指针中删除派生类时,我们需要有虚拟析构函数;但有时父析构函数需要“纯粹”,这在C ++中是不可能实现的。那么,我的问题是默认可以用于虚拟析构函数吗?我已经尝试了它并且它有效,但我不知道它是否安全,因为互联网上没有任何关于它的信息。

编辑:为了澄清问题,我说的是使用virtual ~Class() = default;

2 个答案:

答案 0 :(得分:6)

  

虚拟~Base()=默认值;法律

是。它是。

如果您想拥有纯虚拟析构函数,可以执行以下操作:

class Base
{
public;
    virtual ~Base() = 0;
};

并提供实施:

Base::~Base() = default; // or any other implementation

所以Base是虚拟的。可以使用预C ++ 11(= default;更改{})。

答案 1 :(得分:1)

在这种情况下,使用virtual ~Class() {}更简单。它具有相同的含义,它更短,并且您不需要乱用实现。 = default主要用于复制/移动构造函数/赋值运算符,而不是析构函数。