虛基類的作用

2022-03-28 02:38:02 字數 1333 閱讀 5313

(1):當在多條繼承路徑上有乙個公共的基類,在這些路徑的某幾條匯合處,這個公共的基類就會產生多個例項(或多個副本),若只想儲存這個基類的乙個例項,可以將這個公共基類說明為虛基類、

class cbase ;

class childa1:virtual public cbase;

class childa2:virtual public cbase;

class childb:public childa1,childa2;

則在類childb的物件中,僅有類cbase的乙個物件資料

虛基類的特點:

(1):虛基類建構函式的引數必須由最新派生出來的類負責初始化(即使不是直接繼承).       

(2)虛基類的建構函式先於非虛基類的建構函式執行。

下面看一段程式的輸出結果:

1 #include "

stdafx.h

"2 #include3

using

namespace

std;45

class

cbase

14 ~cbase()

1518

};19

20class childa1: virtual

public

cbase

2127 ~childa1()

2831

intgeta()

3235

};36

37class childa2 : virtual

public

cbase

3844 ~childa2()

4548

intgeta()

4952

};53

54class childb:public childa1,public

childa2

5561 ~childb()

6265

};66

67int

main()

68

程式輸出的結果:

從上例中可以看出來,在類childb的建構函式初始列表中,呼叫了間接基類cbase的建構函式,這對於非基類是非法的,但對於虛基類則是合法而且是必要的。

從輸出的結果可以看出來,其公共基類的建構函式只呼叫了一次,並且優先於非虛基類的構造函式呼叫,並且發現,子派生類的物件childb的成員變數的值只有乙個,所以當公共基類cbase被宣告為虛基類,雖然它成為childa1和childa2的公共基類,但子派生類childb中也只有它的乙個備份.

C 虛基類的作用

虛基類的作用 當乙個基類被宣告為虛基類後,即使它成為了多繼承鏈路上的公共基類,最後的派生類中也只有它的乙個備份。例如 class cbase class cderive1 virtual public cbase class cderive2 virtual public cbase class c...

C 中虛基類的作用

父類 class cparent 繼承類的宣告比較特別 中virtual的作用是 說明這個cparent是cchild 的虛基類 class cchild virtual public cparent 虛基類是指 class subclass virtual public baseclass 中以v...

虛基類的作用 使用及抽象基類虛析構函式問題

1 虛基類 虛基類解決的問題 當存在基類a,類b與c派生自a,類d派生自類b與c時,類d中存在兩個類a物件導致二義性問題。二義性問題還有如 物件d不知道呼叫哪個類b或類c中均存在的func 方法。如何使用虛基類 h class a class b public virtual a 此時類a稱為類b的...