C++ 虚继承 笔记

#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标记

猜你喜欢

转载自blog.csdn.net/qq_37592750/article/details/82861155