又一个继承的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 22:01:53
#include<iostream.h>
int X=30;
class A
{
public:
int i;
A (int j=25)
{
i=j;
cout<<char('A'+i/10);
};
~A()
{
cout<<char('0'+i%10);
};
};
class B
{
public:
int i;
A a;
B(int j)
{
i=j;
cout<<char('A'+i/10);
};
~B()
{
cout<<char('0'+i%10);
};
};
class D:public B,A
{
private:
int i;
B b;
A a;
public:
D(int j):a(j+2),b(j+4),B(j+6),A(j+8)
{
i=j;
cout<<char('A'+i/10);
};
~D()
{
cout<<char('0'+i%10);
};
};
void main(void)
{
D d(X);
return;
}

结果是CDDCDDD0245865
请问,这个结果是怎么得出来的,为什么按这个顺序出现?谢谢

class D:public B,A //多重继承 B 和 A
D d(X);//调用D类的构造函数

D(int j):
a(j+2),b(j+4),B(j+6),A(j+8)
{
i=j;
cout<<char('A'+i/10);
};

继续像上调用构造函数就出来啦