日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

虚拟继承和虚表

發布時間:2024/8/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 虚拟继承和虚表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

普通繼承和虛擬繼承類的大小變化:

普通繼承: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?虛擬繼承:

類A和類B大小為:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

由此可見:1、類中靜態成員不會影響類的大小;

? ? ? ? ? ? ? ? ? ? ? ? ? ?2、當虛擬繼承時,子類中需要有一個虛基類表來記錄虛繼承關系,所以此時子類需要多一個虛基類表指針;而且只需要 ? ? ? ? ? ? ? ? ? ? ? ? 一個即可。

多重繼承+非虛擬繼承: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??多重繼承+虛擬繼承:


各類的大小為:?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

由此可見:1、在多重繼承+非虛擬繼承下基類A的的實體會在D類中存在兩份 ;

? ? ? ? ? ? ? ? ? 2、在多重繼承+虛擬繼承下基類A的的實體會在D類中只存在一份 ;

? ? ? ? ? ? ? ? ? 3、至于類B和類C的大小為何是5在上面已介紹;

? ? ? ? ? ? ? ? ? 4、至于類D的大小由以下幾點確定:

? ? ? ? ? ? ? ? ? ? ? ? 1、被類B,C,D共享的唯一一個ClassA,大小為1字節 ;

? ? ? ? ? ? ? ? ? ? ? ? 2、類B大小(5)-1+ 類C大小(5) -1 ,大小為8字節 ;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3、類D本身的大小,大小為0字節;


普通繼承和虛擬繼承類的虛表變化:

普通繼承: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?虛擬繼承:

? ? ? ? ? ? ? ? ? ? ? ? ?

? ?普通繼承虛表結果: ?


? ?虛擬繼承虛表結果: ?


由此可見:當普通繼承時,子類只有一個虛表,即從父類繼承而來的虛表;當虛擬繼承時子類除了從父類繼承而來的虛表,還會有 ? ? ? ? ? ? ? ? ? ? 一個自己的虛表,即有兩個虛表。












總結

以上是生活随笔為你收集整理的虚拟继承和虚表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。