在派生类中对基类成员访问应该是唯一的,但是在多继承时,可能会导致对基类某成员访问出现不一致的情况,这就是C++多继承中的二义性。
有两种继承的情况会产生多义性
一、如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的成员变量进行访问时,可能产生二义性,继承关系如下图所示:
#include
using namespace std;
class A{
public:
int a;
};
class B1 : public A{
public:
int b1
本文以实例形式较为全面的讲述了C++的多重继承与虚继承,是大家深入学习C++面向对象程序设计所必须要掌握的知识点,具体内容如下:
一、多重继承
我们知道,在单继承中,派生类的对象中包含了基类部分 和 派生类自定义部分。同样的,在多重继承(multiple inheritance)关系中,派生类的对象包含了每个基类的子对象和自定义成员的子对象。下面是一个多重继承关系图:
class A{ /* */ };
class B{ /* */ };
class C : public A { /* */
注意:多重继承在实际开发中尽量少用,能不用就不用。多重继承很繁杂,很复杂。
多重继承就是派生类继承多个基类,继承方法和一个继承是一样的。
一个继承请看我 —> “C++ 继承和派生” 文章,会有详细介绍。
链接: C++ 继承和派生
在这里我主要讲多重继承的细节。
第一
继承方法:
例如已声明了类A、类B和类C,那么可以这样来声明派生类D:
class D: public A, private B, protected C{
//...
};
D 是多继承形式的派生类,
D 有
尽管大多数应用程序都使用单个基类的公用继承,但有些时候单继承是不够用的,因为可能无法为问题域建模或对模型带来不必要的复杂性。在这种情况下,多重继承可以更直接地为应用程序建模。
一、基本概念
多重继承是从多于一个直接基类派生类的能力,多重继承的派生类继承其父类的属性。
class ZooAnimal{
};
class Bear : public ZooAnimal{
};
class Endangered{
};
class Panda :