国产探花免费观看_亚洲丰满少妇自慰呻吟_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個字節存放指針,在其地址上保存自己需要偏移量,從而調用成員,達到解決菱形繼承二義性和數據冗余的目的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 拜城县| 和平县| 利川市| 通山县| 香格里拉县| 贵州省| 温州市| 太仆寺旗| 张家界市| 那曲县| 海兴县| 开化县| 金溪县| 于都县| 桑日县| 漯河市| 炎陵县| 晋城| 谷城县| 德兴市| 五原县| 泸水县| 吴江市| 阜新| 崇左市| 小金县| 民乐县| 九台市| 定州市| 松桃| 顺义区| 同德县| 凤冈县| 桐庐县| 太谷县| 洱源县| 洪泽县| 长岛县| 孟津县| 乳源| 利辛县|