从 C++ 常见问题解答:
[11.4] 我可以为我的班级重载析构函数吗?不。
我意识到这意味着您不能更改返回类型、参数的类型或参数的数量。我可能会对单词的语法感到困惑,但是是否可以覆盖父级的析构函数?
class Child : public Parent {
public:
virtual Parent::~Parent() {
// New definition
}
};
就此而言,它是递归的吗?
class Grandchild : public Child {
public:
Child::Parent::~Parent() {
// An even newer definition
}
};
我已经阅读了这篇文章和一篇相关文章,这让我觉得因为析构函数不是继承的,它们不能被覆盖,但我从未见过它明确说明。
编辑:我改变了这个以反映我想覆盖父析构函数的事实,注意孩子和孙子覆盖〜Parent()。
我这样做的主要原因是为了维护 Parent 的接口,同时改变它的销毁方式(子类的全部原因)。我将有其他东西来管理所有 Parent 的创建,并在我选择的稍后时间显式调用它们的析构函数。