为什么可以使析构函数成为纯虚拟的
why is it possible to make the destructor pure virtual
我在cpp中了解到,当我们删除一个对象或者当main结束时,所有对象的析构函数都会被调用。对于那些类型为 class child 的对象,首先调用 class child 的析构函数,然后调用 class parent 的析构函数。
现在我很困惑。因为如果允许纯虚析构函数,我们删除class个child的对象时怎么调用呢?不是调用纯虚的classparent的析构函数吗?
是的,基class的析构函数被调用了。这意味着它必须 有一个实现。可以为任何纯虚函数提供实现,包括析构函数。例如:
struct foo
{
virtual ~foo() = 0; // pure virtual dtor
};
foo::~foo() {} // implementation
纯虚析构函数的用例是确保 class 没有任何其他纯虚方法不能被实例化。
我在cpp中了解到,当我们删除一个对象或者当main结束时,所有对象的析构函数都会被调用。对于那些类型为 class child 的对象,首先调用 class child 的析构函数,然后调用 class parent 的析构函数。
现在我很困惑。因为如果允许纯虚析构函数,我们删除class个child的对象时怎么调用呢?不是调用纯虚的classparent的析构函数吗?
是的,基class的析构函数被调用了。这意味着它必须 有一个实现。可以为任何纯虚函数提供实现,包括析构函数。例如:
struct foo
{
virtual ~foo() = 0; // pure virtual dtor
};
foo::~foo() {} // implementation
纯虚析构函数的用例是确保 class 没有任何其他纯虚方法不能被实例化。