我将基类destuctor定义为“Virtual”。 例如: -
class Base
{
public:
virtual ~Base()
{
cout << "Calling ~Base()" << endl;
}
};
并且在派生类中也是例如: 例如: -
class Derived: public Base
{
public:
virtual ~Derived()
{
cout << "Calling ~Derived()" << endl;
}
};
我的问题是如何在删除指向派生类对象的基类的指针时调用两个destuctor。??????? 感谢..,
答案 0 :(得分:1)
类的实例在内存中构建为“构建”,其中基础是层次结构中的最高类。按照与构造函数相反的顺序调用Destrcutors。
含义:
子子类 - &gt;子类 - &gt;类
总是调用析构函数。在破坏对象(子类)的一部分之后,它的派生类就被破坏了,等等。
您不必从子类中调用“超级”析构函数的原因是必须始终调用析构函数。此外,与您可能没有默认构造函数(强制您显式调用超级构造函数)的构造函数相反,在析构函数中不是这种情况。你总是有一个没有args的析构函数,所以编译器总是可以告诉“哪个”析构函数调用(因为没有那么多的选项)。