#include using namespace std;
class b
;class b1 : public b
;class b2 : public b
;class c : public b1,public b2
;int main()
c1物件不能訪問變數b,這就是多繼承中的二義性
解決方法:新增virtual關鍵字(虛繼承)。
#include using namespace std;
class b
;class b1 : virtual public b
;class b2 : virtual public b
;class c : public b1,public b2
;int main()
但是如果沒有b類只有b1、b2,那麼virtual將不再起作用,所以多繼承始終會出現問題,所以不建議使用多繼承 C 繼承 二義性 虛繼承
繼承 子類擁有父類所有的成員變數和函式 子類是一種特殊的父類 子類可以當做父類的物件使用 子類可以擁有父類沒有的方法和屬性。class parent class child public parent int main 繼承的訪問控制 c 中的繼承方式會影響子類對外訪問屬性 1 看呼叫語句,是在類的...
C 多繼承的二義性
單繼承 派生類只從乙個基類派生 多繼承 派生類從多個基類派生 多重派生 有乙個基類派生出多個不同的派生類 多層派生 派生類又作為基類,繼續派生出新的類 多繼承可以看作是單繼承的擴充套件。所謂多繼承是指派生類具有多個基類,派生類與每個基類之間的關係仍可看作是乙個單繼承。多繼承下派生類的定義格式如下 c...
C 多繼承的二義性
多繼承可以看作是單繼承的擴充套件。所謂多繼承是指派生類具有多個基類,派生類與每個基類之間的關係仍可看作是乙個單繼承。多繼承下派生類的定義格式如下 class 派生類名 繼承方式1 基類名1 繼承方式2 基類名2 其中,繼承方式1 繼承方式2 是三種繼承方式 public private protec...