继承C++输出顺序

谁能帮我解释一下这段代码,输出顺序?
#include <iostream>
using namespace std;
class A
{
public:
A( )
{
cout << "A" << endl;
}
~A( )
{
cout << "~A" << endl;
}
};
class B
{
public:
B( )
{
cout << "B" << endl;
}
~B( )
{
cout << "~B" << endl;
}
};
class C : public A
{
public:
C( ) {
cout << "C" << endl;
}
~C( ) {
cout << "~C" << endl;
}
private: B c1;
};
int main( )
{ C c;
cout << endl;
return 0;
}

输出为:
A
B
C

~C
~B
~A

构造函数的调用是在该对象实例化时调用,B对象的实例化在C对象实例化之前,故输出B比C早
A和C的输出一样是构造函数的作用
其他没什么问题,就B的输出要复杂点

析构与构造相反
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-20
没什么特殊的啊,就是声明了类A,B,然后从A类派生出C类,C类中有个B类的成员。
对于C c,先执行父类的构造函数,输出A。然后再执行所有成员变量的初始化操作,即对B类成员c1初始化,所以输出B。最后再执行C类的构造函数,输出C。
退出程序时,析构的顺序和初始化的顺序正好相反。
相似回答