见代码:
#include <iostream>
using namespace std;
class A
{
public:
A(int value):m_val(value){cout<<"A object is constructed"<<endl;}
void print()const;
protected:
int m_val;
};
void A::print()const
{
cout<<"A print"<<endl;
cout<<m_val<<endl;
}
class B:virtual public A
{
public:
B():A(3){cout<<"B object is constructed"<<endl;}
B(int value):A(value){cout<<"B object is constructed"<<endl;}
};
class C:virtual public A
{
public:
C():A(2){cout<<"C object is constructed"<<endl;}
C(int value):A(value){cout<<"C object is constructed"<<endl;}
};
class D:public B,public C
{
public:
D():A(1),B(),C(){cout<<"D objecct is constructed"<<endl;} //有A类构造函数来构造A类部分
};
int main()
{
D obj;
obj.print();
return 0;
}
结果是: