c 學習筆記(12)繼承建構函式的建立

2021-06-07 22:20:50 字數 1482 閱讀 3459

1.建構函式

tabletennisclass class:

//ratedplayer deriver from the tabletennisplayer base class

class ratedplayer: public tabletennisplayer

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

//建構函式必須給新成員(如果有的話)和繼承的成員提供資料

//派生類物件包含基類物件

//4 基類的物件應當在程式進入派生類建構函式之前被建立。

//c++使用成員初始化列表句法來完成這種工作

ratedplayer(unsigned int r = 0, char *fn = "none", const char *ln = "none", bool ht = false);

//等價於

ratedplayer(unsigned int r, char *fn, const char *ln, bool ht):tabletennisplayer(fn, ln, ht)

//tabletennisplayer(fn, ln, ht)  為成員初始化列表

2.基類與派生類的相互呼叫

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

ratelplayer relayer1(1140, "mallory", "duck", true);

tabletennisplayer & rt = relayer1;

tabletennisplayer * rt = &relayer1;

3.虛擬析構函式

這樣做為了確保釋放派生物件時, 按正確的順序呼叫析構函式。(common sense)

4.虛方法;

派生類中重新定義基類的方法,通常將基類方法宣告為虛擬的。

關鍵字virtual只用於類宣告的方法原型中,而沒有用於方法定義中。

5. 格式化命令將浮點值的輸出模式設定為定點,既包含兩位小數。

首先,將格式模式重置為呼叫前的狀態:

ios_base::fmtflags initialstate =

cout.setf(ios_base::fixed, ios_base::floatfield);

//selt()返回表示呼叫函式之前的格式狀態值, 這個值定義ios_base::fmtflags 

//最後,將initialstate作為引數傳遞給self(), 以恢復原來的格式設定:

cout.selt(initialstate);

//set up ###.## format

ios_base::fmtflags initialstate =

cout.setf(ios_base::fixed, ios_base::floatfield);

cout.selt(ios_base::showpoint);

cout.precision(2);

.....;

cout.selt(initialstate);

c 基礎 繼承 12 繼承中的建構函式

特點 在子類物件例項化時,缺省會先呼叫父類的建構函式,一直往上找父親。從老祖宗開始執行,一代一代往下。例子 class gameobject class animal gameobject class tree animal class person 截圖 父類中的無參建構函式 所以通過base關鍵...

c 語法筆記 繼承 建構函式

1.例項化父類時,可以通過new子類來例項化父類,執行建構函式的順序為 先執行父類的建構函式 預設無引數 再執行子類的建構函式。a a new b 2.例項化子類時,只可以new子類,執行順序同上。3.父類例項化後,只能執行父類的方法,獲得父類的屬性等。4.例項化子類,可同時執行子類和父類的方法和屬...

C 學習筆記12 多重繼承

多重繼承 multiple inheritance 是指從多個直接基類中產生派生類的能力。class d class b public d class a public d class c public b,public a 上面這段 是有問題的,c繼承了a和b,因為a,b都繼承d。這使得c從a和b...