一 繼承中的同名成員變數處理方法
1、當子類成員變數與父類成員變數同名時
2、子類依然從父類繼承同名成員
3、在子類中通過範圍分辨符::進行同名成員區分(在衍生類別中使用基類的同名成員,顯式地使用類名限定符)
4、同名成員儲存在記憶體中的不同位置
二. 衍生類別中的static關鍵字
繼承和static關鍵字在一起會產生什麼現象哪?
理論知識
Ø 基類定義的靜態成員,將被所有衍生類別共用
Ø 根據靜態成員自身的訪問特性和衍生類別的繼承方式,在類層次體系中具有不同的訪問性質 (遵守衍生類別的存取控制)
Ø 衍生類別中訪問靜態成員,用以下形式顯式說明:
類名 :: 成員
或通過對象訪問 對象名 . 成員
總結:
1> static函數也遵守3個訪問原則
2> static易犯錯誤(不但要初始化,更重要的顯示的告訴編譯器分配記憶體)
3> 建構函式預設為private
多繼承概念
Ø 一個類有多個直接基類的繼承關係稱為多繼承
Ø 多繼承聲明文法
class 衍生類別名 : 存取控制 基類名1 , 存取控制 基類名2 , … , 存取控制 基類名n
{
資料成員和成員函式宣告
};
Ø 類 C 可以根據存取控制同時繼承類 A 和類B 的成員,並添加
自己的成員
多繼承的衍生類別構造和訪問
Ø 多個基類的衍生類別建構函式可以用初始式調用基類建構函式初始化資料成員
Ø 執行順序與單繼承建構函式情況類似。多個直接基類建構函式執行順序取決於定義衍生類別時指定的各個繼承基類的順序。
Ø 一個衍生類別對象擁有多個直接或間接基類的成員。不同名成員訪問不會出現二義性。如果不同的基類有同名成員,衍生類別對象訪問時應該加以識別。
二 虛繼承
如果一個衍生類別從多個基類派生,而這些基類又有一個共同的基類,則在對該基類中聲明的名字進行訪問時,可能產生二義性
分析:
總結:
Ø 如果一個衍生類別從多個基類派生,而這些基類又有一個共同
的基類,則在對該基類中聲明的名字進行訪問時,可能產生
二義性
Ø 如果在多條繼承路徑上有一個公用的基類,那麼在繼承路徑的某處
匯合點,這個公用基類就會在衍生類別的對象中產生多個基類子物件
Ø 要使這個公用基類在衍生類別中只產生一個子物件,必須對這個基類
聲明為虛繼承,使這個基類成為虛基類。
Ø 虛繼承聲明使用關鍵字 virtual
實驗:注意增加virtual關鍵字後,建構函式調用的次數。
三 繼承總結
Ø 繼承是物件導向程式設計實現軟體重用的重要方法。程式員可以在已有基類的基礎上定義新的衍生類別。
Ø 單繼承的衍生類別只有一個基類。多繼承的衍生類別有多個基類。
Ø 衍生類別對基類成員的訪問由繼承方式和成員性質決定。
Ø 建立衍生類別對象時,先調用基類建構函式初始化衍生類別中的基類成員。調用解構函式的次序和調用建構函式的次序相反。
Ø C++提供虛繼承機制,防止類繼承關係中成員訪問的二義性。
Ø 多繼承提供了軟體重用的強大功能,也增加了程式的複雜性。
以上就是c++複習要點總結之九——繼承二的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!