运行环境:macOS shell
代码:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class base
{
protected:
int x;
public:
base(int x1)
{
x = x1;
cout<<"constructing base, x = "<<x<<endl;
}
};
class base1 : virtual public base
{
int y;
public:
base1(int x1, int y1):base(x1)
{
y = y1;
cout<<"constructing base1, y = "<<y<<endl;
}
};
class base2 : virtual public base
{
int z;
public:
base2(int x1, int z1):base(x1)
{
z = z1;
cout<<"constructing base2, z = "<<z<<endl;
}
};
class derived:public base1, public base2
{
int xyz;
public:
derived(int x1, int y1, int z1, int xyz1):base(x1),base1(x1,y1),base2(x1,z1)
{
xyz = xyz1;
cout<<"constructing derived, xyz = "<<xyz<<endl;
}
};
int main ()
{
derived obj(1,2,3,4);
return 0;
}
运行结果: