47)多繼承和虛繼承

2022-04-02 13:43:04 字數 1601 閱讀 1358

1)下面是乙個多繼承的  **:

1 #include2

3using

namespace

std;

4class

bed5

12};

13class

sofa

1421

};22

23//

然後 我還有乙個沙發床

24//

下面是多繼承,支援繼承兩個類,兩個類中的所有東西都繼承過來了

25class sofa_bed:public bed,public

sofa

2633

};34

35int

main()

36

2)然後  我又加了乙個類  就是  funiture

1 #include2

3using

namespace

std;45

class

funiture6;

10class bed:public

funiture

1118

};19

class sofa:public

funiture

2027

};28

29//

然後 我還有乙個沙發床

30//

下面是多繼承,支援繼承兩個類,兩個類中的所有東西都繼承過來了

31class sofa_bed:public bed,public

sofa

3239

};40

41int

main()

42

你看  我的** bed類和sofa類  都繼承了 funiture  那麼都會有 cai_zhi  這個變數,然後  我的sofa_bed  繼承了 bed和sofa  那麼就有了兩個 cai_zhi(乙個來自bed,乙個來自sofa)

沙發床  有兩個  cai_zhi 變數

那麼,就來了   我要是   沙發床.cai_zhi   就出現變數不明確的問題  因為,你不知道是  bed繼承來的cai_zhi  還是  sofa 繼承來的 cai_zhi

但是  加了  virtual  就不會有這個問題了, 我的  sofa_bed   的   cai_zhi  最終來自於 爺爺的 funiture

c 多繼承和虛繼承

一 關於多繼承 菱形繼承 指的是b繼承a,c繼承a,d繼承b和c。下圖是菱形繼承的過程,以及各類的簡單的記憶體布局。菱形繼承存在的問題 間接基類的資料會出現多份導致訪問出錯,並且存在記憶體浪費 我們可以利用虛繼承來解決這一問題。二 虛繼承 虛繼承是物件導向程式設計中的一種技術,是指乙個指定的基類,在...

C 多繼承 虛繼承

一,多繼承 include include using namespace std class b1 繼承類c void main 主函式 c類按照順序繼承b2,b1,b4,b3 再按照資料成員定義順序 memberb1,memberb4,memberb3,memberb2 最後是自己的構造器 二,...

繼承(單繼承 多繼承 菱形繼承 虛繼承)

一 單繼承 單繼承是一種 乙個子類只有乙個直接父類 的繼承關係。二 多繼承 多繼承是一種 乙個子類有兩個或兩個以上直接父類 的繼承關係。三 菱形繼承 菱形繼承由兩個 或以上 單繼承,乙個多繼承構成,結構如下 顯然,上例中assistant類多繼承了student和teacher兩個類,而studen...