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