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

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

菱形虛擬繼承

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

菱形繼承

這里寫圖片描述 對于菱形繼承簡單的代碼實現:

#include <iostream>#include <string>using namespace std;class Person{public: string _name;};class Student :public Person{PRotected: int _num;//學號};class Teacher :public Person{protected: int _id;//職工編號};class Assistant :public Student, public Teacher{protected: string _major;};int main(){ Assistant s; //s._name = "小紅"; s.Teacher::_name = "小紅"; s.Student::_name = "小明"; return 0;}

菱形繼承的對象模型 這里寫圖片描述 因為Student類和Teacher類都繼承了Person類。而當Assistant繼承這兩個類時,保留了兩個Person類,這就造成了數據冗余,從而浪費了空間 上面菱形繼承的例子在主函數給_name賦值時,直接s._name = “小紅”; 就會發現錯誤,這是由于菱形繼承的二義性造成的


那么就提出了一個新的東西–虛繼承,來解決在菱形繼承體系里面子類對象包含多份父類對象的數據冗余,浪費空間的問題。 class 派生類名:virtual 繼承方式 基類名

#include <iostream>#include <string>using namespace std;class Person{public: int _age;};class Student :virtual public Person{public: int _num;//學號};class Teacher :virtual public Person{public: int _id;//職工編號};class Assistant :public Student, public Teacher{public: int _major;};int main(){ Assistant s; s._age = 0; s._id = 1; s._major = 2; s._num = 3; `ystem("pause"); return 0;}

菱形虛擬繼承的對象模型 這里寫圖片描述 虛擬繼承解決了菱形繼承帶來的數據冗余空間浪費的問題,該模型利用對應偏移地址去找成員,避免了二義性。


上一篇:shell命令之文本處理

下一篇:ActionContext

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邯郸县| 昌都县| 白玉县| 松滋市| 长垣县| 商水县| 娱乐| 昂仁县| 缙云县| 宜都市| 安丘市| 固安县| 衢州市| 尤溪县| 青阳县| 姜堰市| 宝清县| 田东县| 平阴县| 东海县| 额敏县| 漳浦县| 眉山市| 周口市| 扎囊县| 嘉善县| 九龙县| 景宁| 黄龙县| 吉林市| 云梦县| 文山县| 静乐县| 珠海市| 扎兰屯市| 新昌县| 横山县| 响水县| 百色市| 扎赉特旗| 巴彦县|