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

虛基類的作用是什么 什么叫做虛基類?

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

什么叫做虛基類?

什么叫做虛基類?

,也就是說(shuō),編譯器不能確定您是否在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.

要解決此問(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.

虛基類的作用是什么?

語(yǔ)法中有抽象類和虛擬基類,這并不意味著你必須使用它們。我通常不使用花哨的東西。

我可以考慮使用抽象類,也許可以利用這個(gè)優(yōu)勢(shì):

具有純虛擬函數(shù)的類是抽象類。這個(gè)函數(shù)實(shí)際上并沒(méi)有在基類中使用,它只是通知編譯器:

在這里聲明一個(gè)虛擬函數(shù),讓它在派生類中定義。為類族提供公共接口。

例如,要計(jì)算平面形狀的面積,在抽象類基類中,virtualfloatarea()const=0

派生類三角形和派生類圓定義了面積()的具體計(jì)算。一旦我們有了一個(gè)派生的三角形或圓,我們就可以使用相同的函數(shù)名。Area()計(jì)算面積。

虛擬基類的構(gòu)造應(yīng)在派生類中完成,并且應(yīng)在派生類本身的構(gòu)造之前完成。當(dāng)存在派生類1、派生類2和生成的派生類12時(shí),派生類12只執(zhí)行一次虛擬基類的構(gòu)造。虛擬基類只有一個(gè)對(duì)象。至于它的特殊用途,我沒(méi)想到。

創(chuàng)建子類對(duì)象時(shí),子類和父類的構(gòu)造函數(shù)執(zhí)行順序是什么?

繼承時(shí),構(gòu)造函數(shù)的調(diào)用順序?yàn)椋?。如果繼承虛擬基類,則首先調(diào)用虛擬基類的構(gòu)造函數(shù)。如果有多個(gè)虛擬基類,請(qǐng)按順序調(diào)用它們。

2. 如果基類是繼承的,則調(diào)用基類的構(gòu)造函數(shù);如果有多個(gè)基類,則按順序調(diào)用它們。三。如果類中定義了成員對(duì)象,則調(diào)用成員對(duì)象的構(gòu)造函數(shù);如果有多個(gè)成員對(duì)象,則按成員對(duì)象定義的順序調(diào)用;4。調(diào)用自己的構(gòu)造函數(shù);析構(gòu)函數(shù)的調(diào)用順序相反。