1:分析菱形繼承的問題。
2:剖析虛繼承是怎麼解決二義性和資料冗餘的
首先,我們先來看乙個菱形繼承的程式。
為了解決以上問題,我們引入虛繼承的語法。可以有效的解決菱形繼承的資料冗餘和二義性問題。
1.虛繼承解決了菱形繼承體系裡子類物件包含多份父類物件的資料冗餘問題和浪費空間的問題。
2.虛繼承看起來複雜,但在實際應用中我們通常不會定義如此複雜的繼承體系,一般不到萬不得已不建議定義菱形結構的虛繼承體系結構。因為使用虛繼承解決資料冗餘問題也帶來了效能上的損耗。
clsaa student : virtual
public person
class teacher : virtual
public person
class assistant : public student,public teacher
2.剖析虛繼承是怎麼解決二義性和資料冗餘的
在上述程式中,二義性表現在 在assistant類中存在name物件,無法確定次name物件是student的還是teacher的。而在assistant類中存在student類和teacher類的name物件相等的情況,即assistant類中有另個含義相同的量,此為資料冗餘。
class a
;class b : virtual
public a
;class c: virtual
public a
;class d: public b, public c
;int main()
C 繼承與多型
派生類繼承基類 又稱父類 超類 的屬性和方法,在此基礎上可以進行修改或新增新的屬性和方法。class 派生類名 繼承方式 基類名 為了保護基類的資料封裝性,無論哪種繼承方式,積累的私有成員在派生類中都是不可見的。1.public繼承 基類的訪問許可權在派生類中不變。公有還是公有,保護還是保護,派生類...
C 繼承與多型
c 是一種物件導向的語言,最重要的乙個目的就是 提供可重用的 而類繼承就是c 提供來擴充套件和修改類的方法。類繼承就是從已有的類中派生出新的類,派生類繼承了基類的特性,同時可以新增自己的特性。實際上,類與類之間的關係分為三種 組合和繼承。以下是三種關係的 為了更好的理解 基類可以派生出派生類,基類也...
C 繼承與多型
public繼承 父類的 public protected保持不變,private 不可見 protected繼承 父類的 public 變為protected protected保持不變 private 不可見 private繼承 父類的 public protected 變為private,pr...