C++派生类里面的构造函数问题 救命!!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/17 07:38:17
阅读下列程序,写出执行结果
1.源程序:
#include <iostream.h>
class A
{
public:
A() {cout<<"A's con."<<endl;}
~A(){cout<<"A's des."<<endl; }
};
class B
{
public:
B() {cout<<"B's con."<<endl;}
~B(){cout<<"B's des."<<endl; }
};
class C:public A,public B
{
public:
C():member(),B(),A() {cout<<"C's con."<<endl;}
~C(){cout<<"C's des."<<endl; }
private:
A member;
};
void main()
{
C obj;
}
解答:
A's con.
B's con.
A's con.
C's con.
C's con.
A's con.
B's con.
A's con.

好像这个题的答案有问题
我从答案中的第三行开始看不懂了
上面派生类中的构造函数里面的 member(), 我不太明白
另外 调用构造函数的时候 按这道题来说 应该是先A 然后是B 然后是派生类里的C吧 怎么第三行答案又来了个A's con
这个程序具体的执行步骤是什么样的啊 请详细一

C的构造函数初始化列表已经给出了初始化顺序:就是先初始化member对象即调用A的构造函数输出A's con,然后初始化B()调用B的构造函数输出B's con. 然后初始化A() 调用A的构造函数输出A's con。然后才是执行C自己的构造函数输出C's con。析构过程正好和构造过程倒过来,因此输出的答案是对的。