据我所知,在cpp中,当我们删除一个对象或main完成时,所有对象的析构函数都会被调用。对于类型为子类的对象,将先调用子类的析构函数,然后调用父类的析构函数。
现在我很困惑。因为如果允许使用纯虚析构函数,那么当我们删除子类的对象时,如何调用它呢?它不是调用了纯虚类parent的析构函数吗?
最佳答案
是的,调用了基类的析构函数。这意味着它必须有一个实现。可以为任何纯虚函数提供实现,包括析构函数。例如:
struct foo
{
virtual ~foo() = 0; // pure virtual dtor
};
foo::~foo() {} // implementation
纯虚析构函数的用例是确保没有任何其他纯虚方法的类无法实例化。
关于c++ - 为什么可以使析构函数成为纯虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476728/