为什么可以使析构函数纯粹虚拟

时间:2015-05-27 08:12:37

标签: c++ destructor pure-virtual

正如我在 cpp 中所知,当我们删除一个对象或主要完成时,将调用所有对象的析构函数。对于那些类型为class child的对象,将首先调用class child的析构函数,然后调用class parent的析构函数。
现在我很困惑。因为如果允许纯虚拟析构函数,当我们删除类child的对象时,如何调用它?它不会调用纯虚拟类父类的析构函数吗?

1 个答案:

答案 0 :(得分:4)

是的,调用基类的析构函数。这意味着必须具有实现。可以为任何纯虚函数提供实现,包括析构函数。例如:

struct foo
{
    virtual ~foo() = 0; // pure virtual dtor
};

foo::~foo() {} // implementation

纯虚析构函数的用例是确保没有任何其他纯虚方法的类无法实例化。