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

遞歸和非遞歸哪個(gè)效率高 設(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è)副本。這樣,通過(guò)將基類繼承聲明為虛繼承,只能繼承基類的一個(gè)副本,從而消除了歧義。使用虛擬限定符將基類繼承描述為虛擬的。

怎樣理解c 中的虛基類和虛函數(shù).純虛函數(shù)?

虛擬函數(shù)和純虛擬函數(shù)有以下區(qū)別。(1) 如果在類中聲明了虛函數(shù),則即使該函數(shù)為空,也會(huì)實(shí)現(xiàn)該函數(shù)。它的目的是使函數(shù)能夠包含在其子類中。這樣,編譯器就可以使用后期綁定來(lái)實(shí)現(xiàn)多態(tài)性。純虛函數(shù)只是一個(gè)接口,一個(gè)函數(shù)的聲明,需要在子類中實(shí)現(xiàn)。(2) 虛擬函數(shù)不能在子類中重載,但是純虛擬函數(shù)必須在子類中實(shí)現(xiàn),就像Java接口一樣。一般來(lái)說(shuō),在許多函數(shù)中添加虛擬元素是一個(gè)好習(xí)慣。雖然犧牲了一些性能,但是面向?qū)ο蟮亩鄳B(tài)性增加了,因?yàn)楹茈y預(yù)測(cè)父類中的函數(shù)不在子類中,并且它的實(shí)現(xiàn)不會(huì)被修改。(3) 虛函數(shù)類用于“實(shí)現(xiàn)繼承”,不僅繼承接口,而且繼承父類的實(shí)現(xiàn)。當(dāng)然,你也可以完成你自己的實(shí)現(xiàn)。純虛函數(shù)注重接口的統(tǒng)一性,通過(guò)子類實(shí)現(xiàn)。(4) 具有純虛函數(shù)的類稱為虛基類。這種基類不能直接生成對(duì)象。只有繼承并重寫虛擬函數(shù)后才能使用。這樣的類也稱為抽象類。在任何非虛擬基類構(gòu)造函數(shù)之前調(diào)用虛擬基類的構(gòu)造函數(shù)。如果構(gòu)造中包含多個(gè)虛擬基類,則它們的調(diào)用順序?yàn)槁暶黜樞颉H绻摂M類是從非虛擬類派生的,則首先調(diào)用非虛擬類的構(gòu)造函數(shù)。

下面是一個(gè)示例:

class X:public y,virtual public Z

X one

調(diào)用順序如下:

Z()//虛擬基類初始化

y()//非虛擬基類

X()//繼承類

有虛基類時(shí),多繼承構(gòu)造函數(shù)調(diào)用順序?

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

這是因?yàn)榫幾g器在編譯時(shí)需要確定子類的函數(shù)定義。例如,確定CA::F。然后,在編譯CB和CC時(shí),它還需要在編譯器的語(yǔ)法樹(shù)中生成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.

要解決此問(wèn)題,有兩種方法:

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í)際上是在編譯過(guò)程中實(shí)現(xiàn)的。當(dāng)使用虛擬繼承時(shí),上面的程序?qū)⒆兂扇缦滦问剑篶lass ca.

什么叫做虛基類?

當(dāng)派生類繼承基類時(shí),添加一個(gè)virtual關(guān)鍵字就是virtual基類繼承,如:類派生:虛公共基類{}虛基類主要解決基類在多次繼承中可能被多次繼承的問(wèn)題,虛基類主要為派生類提供基類,如:類B{}類D1:公共B{}類D2:公共B{}類C:公共D1,公共D2{},其中C繼承自D1和D2,但有兩個(gè)基類,這會(huì)造成混淆。所以我們使用虛擬基類,即:類B{}類D1:虛擬公共B{}類D2:虛擬公共B{}類C:公共D1,公共D2{}