繼承------軟體復用
1. 例項化乙個派生類物件時,先呼叫基類的建構函式。若基類的建構函式沒有引數或者沒有顯式定義基類的建構函式,定義派生類建構函式時不必顯式初始化基類成員,甚至無需定義建構函式,編譯器會自動呼叫派生類的預設建構函式,派生類的預設建構函式去呼叫基類的預設建構函式。派生類不能繼承基類的建構函式和析構函式,故當基類含帶參的建構函式時,派生類必須定義建構函式。
2. c++中一般使用成員初始化列表的方式構造派生類的建構函式,形式如下:
派生類名::派生類建構函式名(參數列):基類建構函式(參數列),物件成員名(參數列),......,物件成員名n(參數列){} 其中,基類的引數可來自派生類的建構函式的參數列或者常數值或表示式。
3. 多重繼承機制帶來的歧義問題,採用虛擬繼承機制解決。使用作用域運算子(::)消除多繼承帶來的歧義性。
4. c++中,如果要使公共基類只產生乙個拷貝,應把該基類宣告為虛基類,要求從基類派生新類時,使用關鍵字virtual將基類宣告為虛基類。虛擬機制需要注意:
1>在虛基類中定義帶參建構函式,且未定義預設建構函式,在整個繼承結構中,所有直接/間接派生類中都必須使用成員初始化列表呼叫虛基類的建構函式,初始化虛基類的成員;
2>在同一繼承層次同時包含虛基類和非虛基類,編譯器先呼叫虛基類的建構函式;
3>由於二義性問題的存在,實際使用中不建議使用多繼承;
5. 多重繼承的構造函式呼叫順序
1>任何虛擬繼承基類的建構函式按照它們被繼承的順序構造;
2>任何非虛擬繼承基類的建構函式按照它們被繼承的順序構造;
3>任何成員物件按照它們宣告的順序呼叫;
4>派生類自己的建構函式。
C 學習筆記 二 基礎知識
1.逗號操作符 逗號表示式是一組由逗號分割的表示式,這些表示式從左向右計算。逗號表示式的結果是其最右邊表示式的值。如果最右邊的運算元 是左值,則逗號表示式的值也是左值。此類表示式通常用於for迴圈 int cnt ivec.size for vector size type ix 0 ix ivec...
C 語言基礎知識學習筆記(二)
昨天學習了c 的基礎知識,就是資料型別。相當於蓋房子的磚頭。沒這些家底是沒法蓋房子的。按照蓋房子的進度,今天要畫設計圖了。咱以前看過,還跟別人討論半天,沒畫過。呵呵,指點江山,卻不知道江山是什麼東西。丟人哪 乙個房子的設計,是需要花費功夫的。因為設計的時候,就決定了房子的樣式,房子需要的材料,房子的...
VC 學習筆記 基礎知識(二)
陣列的長度初始化 char szstr 12 34 char szstr2 1234 std cout sizeof szstr2 std endl std cout sizeof szstr2 std endl std cout std strlen szstr2 std endl std cou...