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:
...
};
谢谢你你的猜测是正确的。
不需要显式调用基类析构函数。不,析构函数永远不应该被显式调用(在子类中或其他情况下,几乎永远都不应该),编译器会为您解决这个问题 您可能希望显式调用它的唯一情况是,您正在滚动自己的内存管理,并且实际上正在显式释放内存(而不是删除一堆对象)