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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湖州市| 台南县| 山东省| 阿勒泰市| 英山县| 商洛市| 汾阳市| 鱼台县| 昭平县| 赤壁市| 乌拉特后旗| 龙泉市| 陈巴尔虎旗| 镇康县| 彭泽县| 定日县| 定州市| 都兰县| 原平市| 九寨沟县| 开阳县| 探索| 汉沽区| 电白县| 水富县| 宁陕县| 汕头市| 岳池县| 商水县| 沙坪坝区| 和顺县| 景泰县| 湄潭县| 宣恩县| 怀柔区| 三穗县| 花莲县| 平度市| 金坛市| 保靖县| 洪湖市|