一道继承的问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 23:33:00
代码如下:
#include<iostream.h>
int X=30;
class A
{
public:
int i;
A (int j)
{
i=j;
cout<<i/10<<",";
};
~A()
{
cout<<i%10<<",";
};
};
class B
{
public:
int i;
B (int j)
{
i=j;
cout<<i/10<<",";
};
~B()
{
cout<<i%10<<",";
};
};
class D:public B,A
{
private:
int i;
B b;
A a;
public:
D (int j):a(j*2),b(j*2+1),B(j*3),A(j+4)
{
i=j;
cout<<i/10<<",";
};
~D()
{
cout<<i%10<<",";
};
};
void main()
{
cout<<endl;
D d(X);
return;
}

请问这道题目的答案是怎么出来的,它按什么样的顺序算出这样的结果,谢谢。
运行结果是:9,3,6,6,3,0,0,1,4,0

#include<iostream.h>
int X=30;
class A
{
public:
int i;
A (int j)
{
i=j;
cout<<i/10<<",";
};
~A()
{
cout<<i%10<<",";
};
};
class B
{
public:
int i;
B (int j)
{
i=j;
cout<<i/10<<",";
};
~B()
{
cout<<i%10<<",";
};
};
class D:public B,A
{
private:
int i;
B b;
A a;
public:
D (int j):a(j*2),b(j*2+1),B(j*3),A(j+4) 调用顺序。置顶到下。派生类先执行父类构造函数 B 1, A 2 ,b 3, a 4, D 5,析构就相反 先析构 D a b A B 按这个顺序算出来是 9 3 6 6 3 0 0 1 4 0
{
i=j;
cout<<i/10<<",";
};
~D()
{
cout<<i%10<<",";
};
};
void main()
{
cout<<endl;
D d(X);
return;
}

这个是公有继承,并类中包括别的类的对象的问题

<