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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

虚拟继承和虚表

發(fā)布時(shí)間:2024/8/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 虚拟继承和虚表 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

普通繼承和虛擬繼承類(lèi)的大小變化:

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

類(lèi)A和類(lèi)B大小為:

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

由此可見(jiàn):1、類(lèi)中靜態(tài)成員不會(huì)影響類(lèi)的大小;

? ? ? ? ? ? ? ? ? ? ? ? ? ?2、當(dāng)虛擬繼承時(shí),子類(lèi)中需要有一個(gè)虛基類(lèi)表來(lái)記錄虛繼承關(guān)系,所以此時(shí)子類(lèi)需要多一個(gè)虛基類(lèi)表指針;而且只需要 ? ? ? ? ? ? ? ? ? ? ? ? 一個(gè)即可。

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


各類(lèi)的大小為:?

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

由此可見(jiàn):1、在多重繼承+非虛擬繼承下基類(lèi)A的的實(shí)體會(huì)在D類(lèi)中存在兩份 ;

? ? ? ? ? ? ? ? ? 2、在多重繼承+虛擬繼承下基類(lèi)A的的實(shí)體會(huì)在D類(lèi)中只存在一份 ;

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

? ? ? ? ? ? ? ? ? 4、至于類(lèi)D的大小由以下幾點(diǎn)確定:

? ? ? ? ? ? ? ? ? ? ? ? 1、被類(lèi)B,C,D共享的唯一一個(gè)ClassA,大小為1字節(jié) ;

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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3、類(lèi)D本身的大小,大小為0字節(jié);


普通繼承和虛擬繼承類(lèi)的虛表變化:

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

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

? ?普通繼承虛表結(jié)果: ?


? ?虛擬繼承虛表結(jié)果: ?


由此可見(jiàn):當(dāng)普通繼承時(shí),子類(lèi)只有一個(gè)虛表,即從父類(lèi)繼承而來(lái)的虛表;當(dāng)虛擬繼承時(shí)子類(lèi)除了從父類(lèi)繼承而來(lái)的虛表,還會(huì)有 ? ? ? ? ? ? ? ? ? ? 一個(gè)自己的虛表,即有兩個(gè)虛表。












總結(jié)

以上是生活随笔為你收集整理的虚拟继承和虚表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。