using namespace std;
class C
{
int a;
public:
C(int aa=0) {a=aa;}
~C() {cout << "Destructor C!" << a << endl;}
};
class D: public C
{
int b;
public:
D(int aa=0, int bb=0): C(aa) {b=bb;}
~D() {cout << "Destructor D!" << b << endl;}
};
void test()
{
D x(5);
D y(6,7);
}
int main()
{
test();
}
上面是代码,下面是运行结果:
Destructor D!7
Destructor C!6
Destructor D!0
Destructor C!5
我不明白为什么“析构函数 C!” 将被调用。以及相关的析构函数的调用顺序。我觉得这似乎是堆栈推送/弹出。
进一步: 为什么前面调用了“ D x(5); ”,而后面给出了相应的结果呢?