国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

菱形繼承與菱形虛擬繼承的相關問題

2019-11-08 19:44:53
字體:
來源:轉載
供稿:網友

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個字節存放指針,在其地址上保存自己需要偏移量,從而調用成員,達到解決菱形繼承二義性和數據冗余的目的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌都县| 农安县| 信阳市| 长岛县| 宾川县| 怀柔区| 安化县| 元阳县| 育儿| 乐清市| 鹤岗市| 兴仁县| 台南县| 宣威市| 林口县| 长白| 紫金县| 惠东县| 章丘市| 汉中市| 平和县| 堆龙德庆县| 玉龙| 磐石市| 怀宁县| 京山县| 昌江| 满洲里市| 项城市| 福州市| 苏州市| 白城市| 古交市| 乌什县| 阳江市| 会理县| 阿拉善右旗| 阿合奇县| 溧阳市| 分宜县| 周至县|