虚拟继承 是多重继承中特有的概念。虚拟继承是为解决多重继承而出现的。如图所示
在一般的多重继承中,D继承来自B,C。而B,C都继承自C,因此在D中出现了2次A,
为了节省空间,可以将B,C对A的继承设定为虚拟继承,A就变成了虚拟基类
class A;
class B : public virtual A;
class C : public virtual A;
class D : public B, public C;
如果在B,C中有相同的函数,D中如何使用?
class B
{
public:
void f() {.............};
};
class C
{
public:
void f() {.............};
};
class D : public B, public C
{
};
int main()
{
D d;
d.B::f();
d.C::f();
}
使用的时候需要加限定符来区分