要让多个子类共享同一个基类的成员,则每个子类继承该基类时都要虚拟继承,即“virtual public 基类”,而各子类之间的继承随意
示例:
#include<iostream>
using namespace std;
class A{
public:
A(){};
int GetpA(){ return pA; }
void SetpA(int a){ pA=a; }
private:
int pA;
}; //------------------------
class B :virtual public A{
public:
void OnB(){}
}; //-----------------------
class C : virtual public A,virtual public B
{
public:
Sc(){};
};
int main()
{
C c;
c.SetpA(20);
cout<<c.GetpA()<<endl;
}
此代码中,”class C : virtual public A,virtual public B“中”virtual public A“前的virtual去掉,则系统会报错:[Error] request for is ambiguous.
但”virtual public B“前的virtual去不去掉随意,因为C只想与B共享基类A。