C 之多繼承和虛繼承

2021-10-04 10:07:04 字數 1196 閱讀 7770

概述:子類繼承於多個父類。

多繼承的格式:

class 子類: 繼承方式1 父類名1,繼承方式2 父類名2,繼承方式3 父類名3,....

;//表示子類 是由 父類名1,父類名2,父類名3...共同派生出來

注意:多繼承容易產生二義性

解決辦法:使用作用域訪問成員

class base1

;class base2

;class son : public base1,public base2

;int main(int argc,char *ar**)

virtual修飾的繼承方式

//繼承的動作 虛繼承

//父類:虛基類

class 子類:virtual public 父類

**注意:**不管繼承多少次 虛基類 只有乙份資料。

案例:菱形繼承

#include using namespace std;

class animal

;class sheep:virtual public animal

;class tuo:virtual public animal

;class sheeptuo:public sheep,public tuo

;int main(int argc, char *ar**)

**總結:**虛繼承只能解決具備公共祖先的多繼承(菱形繼承)所帶來的二義性問題,不能解決沒有公共祖先的多繼承的。

vbptr(虛基類指標)其中v是virtual 虛 b是base 基類 prt指標

(vbptr指向虛基類表)

vbtable(虛基類表 )儲存了當前的虛指標相對於虛基類的首位址的偏移量

C 之多繼承與虛繼承

乙個類有多個直接基類的繼承關係稱為多繼承 多繼承宣告語法 class 派生類名 訪問控制 基類名1,訪問控制 基類名2,類 c 可以根據訪問控制同時繼承類 a 和類 b 的成員,並新增自己的成員 如果乙個派生類從多個基類派生,而這些基類又有乙個共同的基類,則在對該基類中宣告的名字進行訪問時,可能產生...

C 虛繼承和虛繼承

虛繼承是在多繼承中為了解決衝突而技術。學術一點來說,是指乙個指定的基類,在繼承體系結構中,將其成員資料例項共享給也從這個基類直接或間接派生的其他類。虛繼承非常有用,可以避免多繼承的歧義和多重拷貝。考慮有如下繼承結構。b和c繼承a,d多繼承b c,我們看以下 class a class b publi...

第六天之多繼承和虛繼承

多繼承概念 乙個類有多個直接基類的繼承關係稱為多繼承 多繼承宣告語法 class 派生類名 訪問控制 基類名1 訪問控制 基類名2 訪問控制 基類名n 類 c 可以根據訪問控制同時繼承類 a 和類 b 的成員,並新增 自己的成員 多繼承的派生類構造和訪問 多個基類的派生類建構函式可以用初始式呼叫基類...