【发布时间】:2012-04-01 10:04:03
【问题描述】:
我在 Visual Studio 2010 上尝试了以下程序。
#include <iostream>
using namespace std;
class A {
public:
int p;
/*A(){
cout << "Constructor A" << endl;
}*/
~A(){
cout << "Destructor in A" << endl;
}
};
class D: public A
{
public:
/*D(){
cout << "Constructor D" << endl;
}*/
~D(){
cout << "Destructor in D" << endl;
}
};
int main()
{
D d = D();
cout << "Exiting main" << endl;
}
我得到的输出是 -
Destructor in D
Destructor in A
Exiting main
Destructor in D
Destructor in A
我无法理解为什么要调用 D 类和 A 类的析构函数 在“Exiting main”语句执行之前?
我尝试了另一件事-我在上面的代码中取消了对 D 类构造函数的注释,然后输出与我一样 预期 -
Constructor D
Exiting main
Destructor in D
Destructor in A
我在这里错过了什么?
【问题讨论】:
标签: c++ destructor