为纯虚拟析构函数添加定义的目的是什么?

e.J*_*mes 3 c++ destructor pure-virtual

灵感来自:C++ - 我们为什么要在类定义之外定义纯虚析构函数?

以下代码实际上做了什么?

class Object
{
    public:
    virtual ~Object() = 0;
};

Object::~Object() { /*...*/ }
Run Code Online (Sandbox Code Playgroud)

我认为纯虚函数的要点是强制子类实现该特定函数.如果是这种情况,那么为什么还要在虚拟基类中实现相同的功能呢?

Eri*_*rik 10

此代码阻止您创建Object实例,同时允许您创建子类.

在销毁对象时,将调用父类的析构函数,因此它必须存在.无论析构函数是纯虚函数还是非虚函数,这都适用.只有在显式调用它时,才需要定义纯虚拟成员函数Foo:theFunc().