菱形继承与菱形虚拟继承的相关问题
来源:互联网 发布:tp5 command.php 编辑:程序博客网 时间:2024/04/26 17:32
1.首先什么是菱形继承呢?
首先菱形继承是由多重继承衍生出来的,一个子类具有两个或以上直接 父类的继承关系
#include<iostream>using namespace std;class AA{public: int _aa;};class BB: public AA{public: int _bb;};class CC: public AA{public: int _cc;};class DD:public BB,public CC{public: int _dd;};int main(){ DD d; d.BB::_aa = 0; d.CC::_aa = 1; d._bb = 2; d._cc = 3; d._dd = 4; return 0;}
在DD的对象模型中存在两份AA成员,所以菱形继承会存在二义性与数据冗余的问题,而为了解决这个问题,推出了虚拟继承的方法
#include<iostream>using namespace std;class AA{public: int _aa;};class BB:virtual public AA{public: int _bb;};class CC:virtual public AA{public: int _cc;};class DD:public BB,public CC{public: int _dd;};int main(){ DD d; d.BB::_aa = 0; d.CC::_aa = 1; d._bb = 2; d._cc = 3; d._dd = 4; return 0;}
在虚拟继承中完美诠释了以时间换空间
的做法,开辟出8个字节存放指针,在其地址上保存自己需要偏移量,从而调用成员,达到解决菱形继承二义性和数据冗余的目的。
0 0
- 菱形继承与菱形虚拟继承的相关问题
- 继承*菱形继承与菱形虚拟继承
- 菱形继承与菱形虚拟继承
- 菱形继承与菱形虚拟继承
- 【C++】菱形继承与虚拟菱形继承的对比分析
- 菱形继承与虚拟继承
- 菱形继承与虚拟继承
- 菱形的虚拟继承
- 菱形继承&菱形虚拟继承
- 菱形继承&菱形虚拟继承
- 菱形继承--菱形虚拟继承
- 菱形继承->菱形虚拟继承(继承系列问题)
- 虚拟继承与菱形虚拟继承
- 菱形继承与虚拟菱形继承对象模型
- 菱形虚拟继承和菱形继承的对比
- c++ --------- 多态下的菱形继承,菱形虚拟继承
- 菱形继承和菱形虚拟继承探索
- C++菱形继承和菱形虚拟继承
- final用法
- Maximum Subarray
- 解决使用hidesBottomBarWhenPushed隐藏tabbar造成的黑条问题
- 单链表的逆转
- Java对象流的作用
- 菱形继承与菱形虚拟继承的相关问题
- Android Studio中不容易发现的亮点
- 母函数
- Android Service完全解析 (上)
- Think PHP 学习笔记 15.模板变量的详解
- 54. Spiral Matrix
- Java——main函数
- Android Service完全解析 (下)
- vim add some characters according to lines