国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}

運行結果如下:

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

菱形虛擬繼承模型如下:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰县| 阜新| 西城区| 察雅县| 屏山县| 华亭县| 庆元县| 宁海县| 中西区| 科技| 怀远县| 衡山县| 黔东| 武鸣县| 多伦县| 灌南县| 大理市| 永顺县| 贺州市| 濮阳市| 萨嘎县| 浏阳市| 辽源市| 许昌市| 正定县| 周宁县| 贡嘎县| 浑源县| 嘉祥县| 桦甸市| 京山县| 房山区| 定远县| 大姚县| 米易县| 普安县| 克东县| 通化市| 长春市| 南华县| 天津市|