#include<iostream>
using namespace std;
class A{
public:
A(char *s)
{
cout << s << endl;
}
~A(){}
};
class B :virtual public A
{
public:
B(char *s1, char*s2) :A(s1){
cout << s2 << endl;
}
};
class C :virtual public A
{
public:
C(char *s1, char*s2) :A(s1){
cout << s2 << endl;
}
};
class D :public B, public C
{
public:
D(char *s1, char *s2, char *s3, char *s4) :B(s1, s2), C(s1, s3), A(s2 )//初始化成员列表的顺序不是真的构造顺序
{ //其构造顺序与基类被继承的顺序相关
cout << s4 << endl;
}
};
int main() {
D *p = new D("class A", "class B", "class C", "class D");
delete p;
return 0;
}
//输出:BBCD