c++primer plus第十三章-類繼承
1)類繼承:能夠從已有的類派生出新的類,而派生類繼承了原有類(稱為基類)的特徵,包括方法。
可以在已有類的基礎上新增功能。
可以給類新增資料。
可以修改類方法的行為。
2)使用公有派生:基類的公有成員將成為派生類的公有成員;基類的私有部分也將成為派生類的一部分,但是只能通過基類的公有和保護方法訪問。
派生類物件儲存了基類的資料成員(派生類繼承了基類的實現)。
派生類物件可以使用基類的方法(派生類繼承了基類的介面)。
派生類需要新增自己的建構函式。建構函式必須給新成員和繼承的成員提供資料。
派生類可以根據需要新增額外的資料成員和成員函式。
class tabletennisplayer ;
class ratedplayer : public tabletennisplayer ;
3)建立派生類物件時,程式首先建立基類物件。這意味著基類物件應當在程式進入派生類建構函式之前被建立。c++使用成員初始化列表語法來完成這種工作。
ratedplayer :: ratedplayer(unsigned int r,const string &fn,
const string &in,bool ht) : tabletennisplayer(fn,ln,ht)
4)必須首先建立基類物件,如果不呼叫基類建構函式,程式將使用預設的基類建構函式。除非要使用預設建構函式,否則應顯式呼叫正確的基類建構函式。
5)也可以對派生類成員使用成員初始化列表語法,這個時候,應該在列表中使用成員名,而不是類名。
ratedplayer :: ratedplayer(unsigned int r,const tabletennisplayer & tp) : tabletennisplayer(tp), rating(r)
6)建立派生類建構函式的要到如下:
首先,建立基類物件。
其次,派生類建構函式應該通過成員初始化列表將基類資訊傳遞給基類建構函式;
最後,派生類建構函式初始化派生類新增的資料成員。
7)注意:建立派生類物件時,程式首先呼叫基類建構函式,然後再呼叫派生類建構函式。基類建構函式負責初始化繼承的資料成員;派生類建構函式主要用於初始化新增的資料成員。派生類的建構函式總是呼叫乙個基類建構函式。可以使用初始化器列表語法指明要使用的基類建構函式,否則將使用預設的基類建構函式。
派生類物件過期時,程式將首先呼叫派生類析構函式,然後再呼叫基類析構函式。也就是說,釋放物件的順序與建立物件的順序相反。
8)派生類與基類之間的特殊關係:基類指標可以在不進行顯式型別轉換的情況下指向派生類物件;基類引用可以在不進行顯式型別轉換的情況下引用派生類物件。然而,基類指標或引用只能用於呼叫基類方法。
ratedplayer rplayer1(......);//派生類物件
tabletennisplayer &rt = rplayer;//基類引用 引用派生類物件
tabletennisplayer *pt = &rpalyer;//基類指標 指向派生類物件
rt.name();
pt->name();
9)不可以將基類物件和位址賦給派生類引用和指標
tabletennisplayer player(......);//派生類物件
ratedplayer & rr = player;//非法
ratedplayer * pr = player;//非法
C Primer Plus 第十三章筆記
1.使用公有派生,基類的公有成員將成為派生類的共有成員 基類的私有部分也將成為派生類的一部分,但只能通過基類的公有和保護方法訪問。2.派生類建構函式必須使用基類建構函式,意味著基類物件應當在程式進入派生類建構函式之前被建立。如果不呼叫基類建構函式,程式將使用預設的基類建構函式。3.可將派生類物件和位...
c primer plus 第十三章課後程式設計6題
include include include define len 40 int main void 開啟檔案並輸入內容 if in fopen name,w null printf 請輸入檔案內容 n while ch getc stdin eof putc ch,in if fclose in...
c primer plus 第十三章課後程式設計7題
a 交替列印倆個檔案的每一行 include include int main int argc,const char ar if fc fopen ar 2 r null 如果第乙個檔案遇到換行符則列印第二個檔案內容,反之一樣 a 交替列印倆個檔案的每一行。利用檔案指標的特性自動遞增的特點 do ...