C 虛基類詳解

2022-04-28 23:42:17 字數 745 閱讀 6080

1、虛基類的作用從上面的介紹可知:如果乙個派生類有多個直接基類,而這些直接基類又有乙個共同的基類,則在最終的派生類中會保留該間接共同基類資料成員的多份同名成員。

在引用這些同名的成員時,必須在派生類物件名後增加直接基類名,以避免產生二義性,使其惟一地標識乙個成員,如

c1.a::display( )。

在乙個類中保留間接共同基類的多份同名成員,這種現象是人們不希望出現的。c++提供虛基類(virtual base class

)的方法,使得在繼承間接共同基類時只保留乙份成員。

現在,將類a宣告為虛基類,方法如下:

class

a//宣告基類a

;class b :virtual public

a//宣告類b是類a的公用派生類,a是b的虛基類

;class c :virtual public

a//宣告類c是類a的公用派生類,a是c的虛基類

;注意:

虛基類並不是在宣告基類時宣告的,而是在宣告派生類時,指定繼承方式時宣告的。因為乙個基類可以在生成乙個派生類時作為虛基類,而在生成另乙個派生類時不作為虛基類。

宣告虛基類的一般形式為

class 派生類名: virtual 繼承方式

基類名經過這樣的宣告後,當基類通過多條派生路徑被乙個派生類繼承時,該派生類只繼承該基類一次。

需要注意:

為了保證虛基類在派生類中只繼承一次,應當在該基類的所有直接派生類中宣告為虛基類。否則仍然會出現對基類的多次繼承。

C 虛基類詳解

在上一節中,有兩個身份證號顯然是不合理的。為此,可以把class person這個共同基類設定為虛基類,這樣,從不同路徑繼承來的同名資料成員在記憶體中就只有乙個拷貝,同名函式也只有一種對映。虛基類 virtual base class 定義方式如下 class 派生類名 virtual 訪問限定符 ...

C 虛繼承和虛基類詳解

多繼承 multiple inheritance 是指從多個直接基類中產生派生類的能力,多繼承的派生類繼承了所有父類的成員。儘管概念上非常簡單,但是多個基類的相互交織可能會帶來錯綜複雜的設計問題,命名衝突就是不可迴避的乙個。多繼承時很容易產生命名衝突,即使我們很小心地將所有類中的成員變數和成員函式都...

C 虛繼承和虛基類詳解

多繼承 multiple inheritance 是指從多個直接基類中產生派生類的能力,多繼承的派生類繼承了所有父類的成員。儘管概念上非常簡單,但是多個基類的相互交織可能會帶來錯綜複雜的設計問題,命名衝突就是不可迴避的乙個。多繼承時很容易產生命名衝突,即使我們很小心地將所有類中的成員變數和成員函式都...