成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

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

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

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

其目的是消除歧義。

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

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

什么叫做虛基類?

什么叫做虛基類?

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

這是因為編譯器在編譯時需要確定子類的函數(shù)定義。例如,確定CA::F。然后,在編譯CB和CC時,它還需要在編譯器的語法樹中生成CB::F、CC::F和其他標識符。然后,在編譯CD時,由于CB和CC有一個函數(shù)f,編譯器將嘗試生成這兩個CD::f標識符。很明顯,此時會報告錯誤,為時已晚。

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

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

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

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

]| CC(CA)|

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

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