C 菱形繼承與虛繼承

2021-09-05 12:40:22 字數 672 閱讀 6849

// 12_29_study.cpp: 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include using namespace std;

//菱形繼承---多繼承

//兩個類共同繼承於同乙個類;

class animal

;class sheep1 :public animal

;class tuo1 :public animal

;class sheeptuo1 :public sheep1, public tuo1

;void test01()

//輸出均為10;

//只要乙份資料,避免資源浪費和混亂

//菱形問題的解決方案:利用虛繼承;

//加上virtual關鍵字

class sheep2 :virtual public animal

;class tuo2 :virtual public animal

;class sheeptuo2 :virtual public sheep2, virtual public tuo2

;void test02()

//輸出均為20;

//實際上操作的是乙份共享的資料;

int main()

C 多繼承 菱形繼承 虛繼承

b和c都單繼承了a d繼承了b和c 是多繼承 有兩個或兩個以上的基類就是多繼承 class a public int ma class b public a public int mb class c public a public int mc class d public b,public c ...

C 繼承6 虛繼承 菱形繼承

建立 1.farmer類,資料成員 m strname,成員函式 構造 析構 sow 2.worker類,資料成員 m strcode,成員函式 構造 析構 carry 3.migrantworker類,資料成員 無,成員函式 構造 析構 4.person類,資料成員 m strcolor,成員函式...

c 多重繼承 虛繼承 菱形繼承

多重繼承的特性和使用和單繼承沒區別。按照單繼承來使用即可。多重繼承可能會引入乙個 菱形繼承的問題 這個問題其實並不算問題,因為它合情合理,即多個基類 擁有乙個共同的基類,那麼在構造的時候,由於構造的遞迴特性,就會出現共同基類出現兩份例項的 情況,而且如果針對性修改,那麼如果不在訪問共同基類的時候先指...