C++ C++;——子类析构函数是否应该显式调用基类析构函数?

C++ C++;——子类析构函数是否应该显式调用基类析构函数?,c++,C++,可能重复: 大家好, 我想知道子类析构函数是否应该显式调用基类析构函数。我的答案是否定的 比如说, class A { public: A() {...} virtual ~A() {...} protected: ... private: ... }; class B: public A { public: B() {...} virtual ~B() { ... // should we call 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:
   ...

};
谢谢你

你的猜测是正确的。
不需要显式调用基类析构函数。

不,析构函数永远不应该被显式调用(在子类中或其他情况下,几乎永远都不应该),编译器会为您解决这个问题

您可能希望显式调用它的唯一情况是,您正在滚动自己的内存管理,并且实际上正在显式释放内存(而不是删除一堆对象)