#include <iostream>
#include <iomanip>
using namespace std;
class X
{
protected:
int a;
public:
X() { a = 1; cout << setw(3) << "X:" << a << endl; }
void fund() { cout << "X标记" << endl; }
};
class X1 : virtual public X
{
public:
X1() { a += 1; cout << setw(3) << "X1:" << a << endl; }
void fund() { cout << "X1标记" << endl; }
};
class X2 : virtual public X
{
public:
X2() { a += 2; cout << setw(3) << "X2:" << a << endl; }
void fund() { cout << "X2标记" << endl; }
};
class Y :public X1, public X2
{
public:
Y() { cout << setw(3) << "Y:" << a << endl; }
void fun() { cout << "Y标记" << endl; }
};
int main()
{
Y obj;
obj.fun();
//obj.fund(); 访问不明确不通过编译
obj.X2::fund();
obj.X1::fund();
obj.X::fund();
return 0;
}
输出结果:
X:1
X1:2
X2:4
Y:4
Y标记
X2标记
X1标记
X标记