【发布时间】:2011-07-29 21:59:17
【问题描述】:
请考虑以下事项
class base{
base();
~base();
}:
class derived : public base{
};
当派生对象被析构并且派生类没有定义析构函数时,是否会自动调用基类析构函数?
否则,如果我在派生类中也有析构函数,我是否也需要显式调用基类析构函数?
class base{
base();
~base();
}:
class derived : public base{
derived();
~derived
base::~base(); //do I need this?
}
};
【问题讨论】:
-
不,你不需要这样做——它是自动的
-
请注意,您可以通过简单的实验来回答这个问题,方法是在基本析构函数中打印一些内容。
-
@Beta:你是对的。但我更喜欢对这个主题有一个完整的解释。事实上,现在我意识到我应该在基类中声明我的虚拟析构函数。如果我只是尝试使用 print 语句,我不会意识到这一点,因为实际上我没有在基类引用上调用任何析构函数。
标签: c++ destructor derived-class base-class