目錄
多繼承與虛繼承以及存在的問題 例子
虛繼承有了多繼承,虛繼承才會有意義
如果有個菱形結構的繼承,爺爺類為a,然後b,c是a的派生類,最後d是b和c的派生類,
如果在a中有乙個成員變數a,d去呼叫就會出現訪問不明確,
虛繼承就可以解決訪問不明確的這種問題
如果這樣繼承b,c虛繼承了a,virtual public,然後d繼承b,c
通常的理解方式!
在虛繼承之後,a裡面的成員變數a是不複製給b和c的,而是只給了b和c使用權,所以d也只有使用權
多繼承,虛繼承不建議用,結構複雜,記憶體開銷比較大。
用菱形的結構簡單的就可以了,可讀性比較好
這裡的a叫做虛基類
採用多繼承,會出現訪問不明確的問題。
如下**:
#include using namespace std;
class a
int m_valuea;
void print()
};class b: public a;
class c: public a;
class d: public b, public c;
int main()
執行報錯截圖如下:
此時採用虛繼承就能很好的解決這個問題:
**如下:
#include using namespace std;
class a
int m_valuea;
void print()
};class b: virtual public a;
class c: virtual public a;
class d: public b, public c;
int main()
執行截圖如下:
C 多繼承 虛繼承
一,多繼承 include include using namespace std class b1 繼承類c void main 主函式 c類按照順序繼承b2,b1,b4,b3 再按照資料成員定義順序 memberb1,memberb4,memberb3,memberb2 最後是自己的構造器 二,...
C 的多繼承與虛繼承
乙個類有多個直接基類的繼承關係稱為多繼承 多繼承宣告語法 class 派生類名 訪問控制 基類名1,訪問控制 基類名2,類 c 可以根據訪問控制同時繼承類 a 和類 b 的成員,並新增自己的成員 如果乙個派生類從多個基類派生,而這些基類又有乙個共同的基類,則在對該基類中宣告的名字進行訪問時,可能產生...
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 ...