问题及代码:
#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");
/*
构造一个类D的对象,所以执行D的构造函数,要先执行他的基类B和C的构造函数,B( "class A","class B"),C("class C","class D")
B的构造函数,先执行A的构造函数,所以,输出 class A class B
C的构造函数,先执行A的构造函数,所以,输出 class C class D
然后在C的构造函数内,增加的 cout<<s4<<endl; 所以输出 class D
*/
return 0;
}
运行结果:
知识点总结:
多重继承的构造函数
学习心得:
如上注释