如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的名字进行访问时,可能产生二义性(这就是虚继承virtual的唯一应用场景)
#include
using namespace std;
class A
{
public:
int a;
void print()
{
cout << “a:” << a << endl;
}
};
class B1:virtual public A
{
};
class B2:virtual public A
{
};
class C:public B1,public B2
{
};
void main()
{
C c1;
c1.a=100;
c1.print();
system("pause");
}
注意:加上virtual后,c++编译器会给变量偷偷增加属性