派生類和基類的關係

2021-08-21 15:38:25 字數 1139 閱讀 6182

c++乙個主要目標是提供**重用,類繼承是實現該目標的重要途徑之一。從乙個類派生出另乙個類時,原始類稱為基類,繼承類稱為派生類。 

派生類和基類的關係: 

1. 派生類物件儲存了基類的資料成員 

2. 派生類物件可以使用基類的方法 

如下例:

「` class baseclass 

; class derivclass :public baseclass 

; 若有derivclass tom,則tom.data1,tom.name()都是正確的。 

既然需要構建派生類,說明原有的基類不能滿足程式的需要,所以派生類要有自己的建構函式,可以額外新增需要的資料成員和成員函式。 

派生類和基類的特殊關係:

書上是這樣定義的: 

1.基類指標可以在不進行顯式型別轉換的情況下指向派生類物件; 

2.基類引用可以在不進行顯式型別轉換的情況下引用派生類物件; 

當然,我們說人話,具體看下面例子: 

derivclass mike; 

baseclass &rt = mike; 

baseclass *pt = &mike; 

指標和引用都是基類baseclass型別的,所以rt.name()和pt->name()都是合法的。

baseclass jake; 

derivclass &rr = jake; 

derivclass *pr = &jake; 

指標和引用都是派生類derivclass型別的,rr.name()和pr->name()都是不合法的,為什麼呢? 

試想,基類引用可以引用派生類物件,則可以使用基類引用呼叫派生類物件的方法,因為派生類繼承了基類的方法,基類呼叫派生類是沒問題的。 

若派生類引用能引用基類物件,這就要出問題了。因為派生類中可能有基類沒有的方法,用派生類掉用基類會出現不確定的情況,編譯器不允許這種情況出現。 

總而言之可以這樣認為:派生類包含基類,少的呼叫多的沒問題,多的呼叫少的就可能出問題了。如下圖: 

派生類和基類的關係

例如以下類 class tabletennisplayer void resettable bool v 派生類 class ratedplayer public tabletennisplayer void resetrating unsigned int r tabletennisplayer ...

派生類和基類的關係

在c 中,我們允許 將派生類物件賦給基類物件。不允許將基類物件賦給派生類物件 只會將基類物件成員賦值,a1 b1 a是基類,b是派生類 用基類指標指向派生類物件。不允許用派生類指標指向基類物件 基類指標只能操作基類中的成員,pa b1 a是基類,b是派生類 基類引用作為派生類的別名。不允許派生類引用...

派生類和基類之間的關係

1 派生類物件可以使用基類的方法,條件是方法不是私有的 ratedplayer rplayer 1140,mallory duck true rplayer.name 2 基類指標可以在不進行顯示型別轉換的情況下指向派生類物件 3 基類引用可以在不進行顯式型別轉換的情況下引用派生類物件 ratedp...