c 多繼承及其二義性

2021-09-29 17:17:48 字數 840 閱讀 6787

上面繼承關係中,b1類與b2類同時繼承自b類,c類繼承自b1類與b2類。

所以當呼叫b類時,c++編譯器不知道b類成員變數等到底是**於b1還是b2類,會導致二義性,引起失敗。

#includeusing namespace std;

class b

};class b1 : public b

};class b2 : public b

};class c : public b1, public b2

};int main()

上述**在c++編譯器中會產生二義性。

虛繼承  (新增  virtual關鍵字)

解決方式是虛繼承, 即在b1類繼承b類與b2類繼承b類上分別新增virtual關鍵字,

C 多繼承的二義性

單繼承 派生類只從乙個基類派生 多繼承 派生類從多個基類派生 多重派生 有乙個基類派生出多個不同的派生類 多層派生 派生類又作為基類,繼續派生出新的類 多繼承可以看作是單繼承的擴充套件。所謂多繼承是指派生類具有多個基類,派生類與每個基類之間的關係仍可看作是乙個單繼承。多繼承下派生類的定義格式如下 c...

C 多繼承的二義性

多繼承可以看作是單繼承的擴充套件。所謂多繼承是指派生類具有多個基類,派生類與每個基類之間的關係仍可看作是乙個單繼承。多繼承下派生類的定義格式如下 class 派生類名 繼承方式1 基類名1 繼承方式2 基類名2 其中,繼承方式1 繼承方式2 是三種繼承方式 public private protec...

C 多繼承的二義性

多繼承可以看作是單繼承的擴充套件。所謂多繼承是指派生類具有多個基類,派生類與每個基類之間的關係仍可看作是乙個單繼承。多繼承下派生類的定義格式如下 class 派生類名 繼承方式1 基類名1 繼承方式2 基類名2 其中,繼承方式1 繼承方式2 是三種繼承方式 public private protec...