可能重复:
Do I need to explicitly call the base virtual destructor?
大家好,
我想知道子类析构函数是否应该显式调用基类析构函数。我的回答是否定的。
例如,
class A
{
public:
A() {...}
virtual ~A() {...}
protected:
...
private:
...
};
class B: public A
{
public:
B() {...}
virtual ~B()
{
...
// should we call destructor of A?
}
protected:
...
private:
...
};
谢谢
答案 0 :(得分:5)
不,绝不应该显式调用析构函数(在子类中或其他情况下,几乎从不),编译器会为您处理。
您可能希望明确调用它的唯一情况是您正在滚动自己的内存管理,并且您实际上是在显式释放内存(而不是删除一堆对象)。
答案 1 :(得分:3)
你的猜测是正确的。 无需显式调用基类析构函数。