1.一个多继承的样例如下:
因为B中和C中都有继承来的变量,用D调用时就会出现歧义,如下:
#include<iostream>
using namespace std;class A
{
public:int a;
};class B :public A
{
public:int b;
};class C :public A
{
public:int c;
};class D :public B, public C
{
public:int d;
};int main()
{D d;d.a = 100;//产生歧义,会报错//正确方法d.B::a = 100;d.C::a = 200;return 0;
}
2.为了解决多继承的命名冲突和数据冗长问题,我们就要用到虚继承。
它涉及的关键字为virtual
#include<iostream>
using namespace std;class A
{
public:int a;
};class B :virtual public A
{
public:int b;
};class C :virtual public A
{
public:int c;
};class D :public B, public C
{
public:int d;
};int main()
{D d;d.a = 100;//正确return 0;
}
虚继承就是让某个类承诺共享他的基类(父类),这个基类称为虚基类。这意味着无论虚基类在继承中出现多少次,在派生类中(子类)只包含一份虚基类的成员。
一般情况下不要使用多继承,虚继承应在“分叉处”。