卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

虛基類是抽象類嗎 設(shè)置虛基類的目的?

設(shè)置虛基類的目的?其目的是消除歧義。當(dāng)多個(gè)繼承路徑上存在公共基類時(shí),在多個(gè)路徑的匯合處,公共基類將生成多個(gè)實(shí)例(或多個(gè)副本)。如果只想保存基類的一個(gè)實(shí)例,可以將公共基類描述為虛擬基類。虛擬基類的基本原

設(shè)置虛基類的目的?

其目的是消除歧義。

當(dāng)多個(gè)繼承路徑上存在公共基類時(shí),在多個(gè)路徑的匯合處,公共基類將生成多個(gè)實(shí)例(或多個(gè)副本)。如果只想保存基類的一個(gè)實(shí)例,可以將公共基類描述為虛擬基類。

虛擬基類的基本原則是在內(nèi)存中只有其成員的一個(gè)副本。這樣,通過將基類繼承聲明為虛繼承,只能繼承基類的一個(gè)副本,從而消除了歧義。使用虛擬限定符將基類繼承描述為虛擬的。

什么叫做虛基類?

什么叫做虛基類?

,也就是說,編譯器不能確定您是否在D中。在f()中調(diào)用哪個(gè)函數(shù)f。這可能會(huì)讓人覺得有點(diǎn)奇怪。命名只定義了一個(gè)CA::F。因?yàn)槊總€(gè)人都從CA派生,所以它自然地被稱為CA::F。為什么我們不能確定呢?

這是因?yàn)榫幾g器在編譯時(shí)需要確定子類的函數(shù)定義。例如,確定CA::F。然后,在編譯CB和CC時(shí),它還需要在編譯器的語(yǔ)法樹中生成CB::F、CC::F和其他標(biāo)識(shí)符。然后,在編譯CD時(shí),由于CB和CC有一個(gè)函數(shù)f,編譯器將嘗試生成這兩個(gè)CD::f標(biāo)識(shí)符。很明顯,此時(shí)會(huì)報(bào)告錯(cuò)誤,為時(shí)已晚。

(當(dāng)我們不使用CD::F時(shí),不會(huì)生成上述任何標(biāo)記,因此如果我們刪除D.

要解決此問題,有兩種方法:

1。重載函數(shù)f():此時(shí)由于我們已經(jīng)明確定義了CD::f,編譯器在檢查CD::f()調(diào)用時(shí)不需要一步一步生成CD::f label;

此時(shí)CD的元素結(jié)構(gòu)如下:| CB(CA)|

]| CC(CA)|

,所以sizeof(CD)=8(CB和CC各有一個(gè)元素K)

2。使用虛擬繼承:虛擬繼承也稱為共享繼承。這種共享實(shí)際上是在編譯過程中實(shí)現(xiàn)的。當(dāng)使用虛擬繼承時(shí),上述程序?qū)⒆兂梢韵滦问剑侯恈a。