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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

菱形虛擬繼承和菱形繼承的對比

2019-11-08 19:47:16
字體:
供稿:網(wǎng)友

     懶博主終于上線啦!今天要和大家分享的是關(guān)于菱形虛擬繼承和菱形繼承的一些看法。

關(guān)于菱形虛擬繼承,大家都知道,通常情況下由于c++允許多繼承而形成的菱形繼承會導(dǎo)致二義性和數(shù)據(jù)冗余,舉個栗子吧!

菱形繼承

一個菱形繼承模型

如上圖所示的一般菱形繼承中,二義性出現(xiàn)在manage類中_name上,無法確定_name成員到底是屬于work類還是message類;而在manage類中可能存在work類和message類的_name成員的值相等的情況,即manage類中有兩個含義相同的量,這就導(dǎo)致了數(shù)據(jù)冗余。

為了解決菱形繼承的二義性和數(shù)據(jù)冗余,我們使用虛繼承。利用上面的栗子我們可以簡略的從代碼上區(qū)別菱形繼承和菱形虛擬繼承:

為了探索虛擬繼承為啥可以解決二義性和數(shù)據(jù)冗余,我們從主觀的監(jiān)視窗口和內(nèi)存管理分別區(qū)分如下:

監(jiān)視窗口對比圖

內(nèi)存管理對比圖

由上圖可知,虛擬繼承把具有二義性的成員用指向存放該位置到存儲成員數(shù)據(jù)位置的偏移量的指針來代替原成員數(shù)據(jù),并把具有二義性的成員數(shù)據(jù)放在類中其他成員數(shù)據(jù)之后。此時成員就不再具有二義性,類中只有一份成員數(shù)據(jù),不存在相同成員含義的兩分?jǐn)?shù)據(jù),因此也就不會存在二義性和數(shù)據(jù)冗余問題了。

今天的分享就到這里了!再會!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 平邑县| 海丰县| 新巴尔虎右旗| 泰州市| 阳原县| 宁蒗| 泌阳县| 梁河县| 思茅市| 康保县| 金溪县| 西乡县| 齐河县| 克山县| 溧水县| 天津市| 长顺县| 漠河县| 板桥市| 新竹县| 金湖县| 屯昌县| 前郭尔| 张家界市| 绥棱县| 大余县| 马尔康县| 嘉峪关市| 富蕴县| 阳曲县| 东山县| 延寿县| 泽普县| 凌云县| 宁津县| 巴中市| 灵石县| 营口市| 招远市| 雅安市| 德阳市|