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...