继承的二义性
- 如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的名字进行访问时,可能产生二义性;
- 解决方法:虚继承 virtual关键字
- 案例
#include<iostream>
using namespace std;
class B
{
public:
int b;
};
class B1 : virtual public B
{
public:
int b1;
};
class B2 : virtual public B
{
public:
int b2;
};
class C :public B1, public B2
{
public:
int c;
};
void main()
{
C c1;
c1.b1 = 100;
c1.b2 = 200;
c1.c = 300;
//c1.b = 400; //对“b”的访问不明确 不知道是B1的b还是B2的b
//---->由此,引入 虚继承virtual 关键字
//解决 继承的二义性
c1.b = 500; //不再报错
system("pause");
}