#include <iostream>
using namespace std;
class A
{
public:
A(char *s){cout<<s<<endl;}
};
class B:public A
{
public:
B(char *s1, char *s2):A(s1){
cout<<s2<<endl;
}
};
class C:public A
{
public:
C(char *s1,char *s2):A(s1){
cout<<s2<<endl;
}
};
class D:public B, C
{
public:
D(char *s1,char *s2,char *s3,char *s4):
B(s1,s2),C(s3,s4){cout<<s4<<endl;}
};
int main()
{
D d("class A","class B","class C","class D");
return 0;
}
运行结果:
过程分析:
A类是B类和C类的继承类型为public的基类,B类和C类又是public型的D类的基类
所以在执行D类的构造函数时,先调用B C类的构造函数,调用B C 两类的构造函数,需要先调用A类的构造函数