1 基础概念:
多继承,顾名思义就是有多个基类,多继承的含义是针对单继承而言的。单继承只有一个基类;而多继承则有多个基类,在内存布局中会将每个基类按照声明的顺序进行分布,排列。如果某个基类包含虚函数,则该类的内存布局中优先进行分布,排列。
1.1 多继承的种类
- 普通多继承,即各个基类中仅包含属性和方法,但是均不包含虚函数
- 多继承的一个或者多个基类中包含虚函数
- 菱形继承(钻石继承)
- 虚继承
1.2 多继承内存分配原则
默认基类的声明顺序,先声明,先存储,先父类,再子类的顺序。但是有一种情况例外情况就是,如果多继承中先声明的基类没有虚函数,而后声明的基类包含虚函数,那么在内存布局中包含虚函数的类其数据成员在内存布局上优先于不包含虚函数的基类,即使不包含虚函数的类声明优先于包含虚函数的基类。
class A{ void fun(){...} int a; } class B{ virtual void fun1(){....} public: int b; } class C:public A,public B { ... public: int c; }
讯享网
若按照默认原则,则类C的内存布局如下所示:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/125363.html