1. 背景
Java和C++在语法层面比较的时候就不得不提到C++的多继承,我们知道Android是单继承,C++是多继承。在大型项目中不可避免的会用到多继承,本文分析C++多继承的一些特征。
2. 如何实现多继承?
C++中,我们可以在派生列表中包含多个基类:
class Sub : public Base{
...
}
class SubA : public Base1, public Base2{
...
}
关于多继承的几点说明:
- 每个基类均包含一个可选的访问说明符;
- 派生类列表只能包含已经被定义过的类;并且这些类不能是final的;
- C++对于派生类能继承的积累个数没有特殊规定,但是派生类列表中同一个基类只能出现一次。比如:可以
Sub:public Base1,public Base2,public Base3 ....
,但是不能Sub:public Base1,Base1
.
3. 多继承中从每个基类中继承的状态
在多继承中,子类的对象包含每个基类的子对象,比如Sub继承Base1,Base2,Base1又继承自Base,那么Sub对象的结构如下图: