为什么下面析构时,b、a的析构函数没有被调用???
《深度探索C++对象模型》中讲过,先调用自己的析构函数,再调用成员变量的析构函数,最后调用父类的析构函数。
以下代码的输出,有点超乎我的理解范围,求解,求相助!
#include "stdafx.h"
#include
#include
using namespace std;
class A
{
public:
A()
{
puts("In A");
}
~A()
{
puts("Out A");
}
};
class B
{
public:
B()
{
puts("In B");
}
~B()
{
puts("Out B");
}
};
class X
{
public:
X()
{
puts("In X");
}
~X()
{
puts("Out X");
}
virtual void test()
{
puts("test in X");
}
};
class C:public X
{
public:
C(): b(), a()
{
puts("In C");
}
~C()
{
puts("Out C");
}
virtual void test()
{
puts("test in C");
}
private:
A a;
B b;
};
int main()
{
X* p = new C;
p->test();
delete p;
return 0;
}