可能重复:
我是否需要显式调用基本虚拟析构函数?
大家好,
我想知道子类析构函数是否应该显式调用基类析构函数.我的回答是否定的.
例如,
class A
{
public:
A() {...}
virtual ~A() {...}
protected:
...
private:
...
};
class B: public A
{
public:
B() {...}
virtual ~B()
{
...
// should we call destructor of A?
}
protected:
...
private:
...
};
Run Code Online (Sandbox Code Playgroud)
谢谢
不,绝不应该显式调用析构函数(在子类中或者其他情况下,从根本上说,从不),编译器将为您处理.
您可能希望明确调用它的唯一情况是您正在滚动自己的内存管理,并且您实际上是显式释放内存(而不是删除一堆对象).