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

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

研究虛表(探索多態的原理)和菱形虛擬繼承

2019-11-08 20:11:33
字體:
來源:轉載
供稿:網友

菱形繼承也稱鉆石繼承,具體模型如下:

菱形繼承代碼段如下:

#include<iostream>using namespace std;class AA{public: int _a;};class BB:public AA{public: int _b;};class CC:public AA{public: int _c;};class DD:public BB, public CC{public: int _d;};int main(){ AA a; BB b; CC c; DD d; cout<<sizeof(a)<<endl; cout<<sizeof(b)<<endl; cout<<sizeof(c)<<endl; cout<<sizeof(d)<<endl; system("pause"); return 0;}

運行結果如下:

但由于菱形繼承仍有兩大缺點:二義性與數據冗余,所以由此我們引進菱形虛擬繼承來完善這兩點

#include<iostream>using namespace std;class AA{public: int _a;};class BB:virtual public AA{public: int _b;};class CC:virtual public AA{public: int _c;};class DD:public BB, public CC{public: int _d;};int main(){

 AA a; BB b; CC c; DD d; cout<<sizeof(a)<<endl; cout<<sizeof(b)<<endl; cout<<sizeof(c)<<endl; cout<<sizeof(d)<<endl; system("pause"); return 0;}

運行結果如下:

運行結果反而增大了,這似乎出乎我們的意料,但其實不然,這是因為虛擬繼承需要額外占用八個字節,出現這樣的原因是我們的成員過小,使節省空間這個目的沒有明確的表現出來。

菱形虛擬繼承模型如下:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南昌县| 贵州省| 田阳县| 青河县| 钦州市| 诸暨市| 海盐县| 锦屏县| 宝应县| 利津县| 称多县| 左云县| 巴南区| 赞皇县| 新巴尔虎右旗| 临沭县| 潮安县| 昭苏县| 民丰县| 和硕县| 宜章县| 丰城市| 永兴县| 阿拉善右旗| 平安县| 囊谦县| 南开区| 旌德县| 仙居县| 溧阳市| 团风县| 通渭县| 德惠市| 淅川县| 南漳县| 黑河市| 双柏县| 广昌县| 莱阳市| 文成县| 雷州市|