首頁 >後端開發 >C#.Net教程 >c++複習要點總結之九-繼承二

c++複習要點總結之九-繼承二

黄舟
黄舟原創
2017-01-16 11:47:051138瀏覽

一繼承中的同名成員變數處理方法

1、當子類別成員變數與父類別成員變數同名時

2、子類別依然從父類別繼承同名成員

3、在子類別中透過作用域分辨符::進行同名成員區分(在衍生類別中使用基底類別的同名成員,明確地使用類別名稱限定符)

4、同名成員儲存在記憶體中的不同位置

c++複習要點總結之九-繼承二

c++複習要點總結之九-繼承二

二. 衍生類別中的static關鍵字

繼承和static關鍵字在一起會產生什麼現象哪?

理論知識

Ø 基類定義的靜態成員,將被所有派生類共享

Ø 根據靜態成員自身的訪問特性和派生類的繼承方式,在類層次體系中具有不同的訪問性質(遵守派生類別的存取控制)

Ø 在衍生類別中存取靜態成員,以下列形式明確說明:

類別名稱:: 成員

或透過物件存取物件名稱. 成員

c++複習要點總結之九-繼承二

c++複習要點總結之九-繼承二總結:

1> static函數也遵守3個訪問原則c++複習要點總結之九-繼承二

2> static易犯錯誤(不但要初始化,更重要的顯示的告訴編譯器分配內存)


3> 構造函數默認為private

多繼承概念 

Ø 一個類別有多個直接基類別的繼承關係稱為多重繼承

Ø 多重繼承宣告語法

class 衍生類別名稱: 存取控制基底類別名稱1 , 存取控制基底類別名稱2 , … ,存取控制基底類別名稱n

{

資料成員和成員函數宣告

};

Ø 類別C 可以根據存取控制同時繼承類別A 和類別B 的成員,並加入

自己的成員


多繼承的衍生類別建構與存取 

Ø 多個基底類別的衍生類別建構子可以用初始式呼叫基底類別建構子初始化資料成員

Ø 執行順序與單一繼承建構子情況類似。多個直接基底類別建構函式執行順序取決於定義衍生類別時指定的各個繼承基底類別的順序。 c++複習要點總結之九-繼承二

Ø 一個派生類別物件擁有多個直接或間接基底類別的成員。不同名成員存取不會出現二義性。如果不同的基底類別有同名成員,派生類別物件存取時應該加以識別。







二虛繼承

c++複習要點總結之九-繼承二如果一個派生類從多個基類派生,而這些基類又有一個共同的基類,則在對該基類中聲明的名字進行訪問時,可能產生二義性

c++複習要點總結之九-繼承二

分析:

c++複習要點總結之九-繼承二總結:

Ø 如果一個派生類別從多個基類派生,而這些基類又有一個共同

在該基類中聲明的名字進行訪問時,可能產生c++複習要點總結之九-繼承二

二義性


Ø 如果在多條繼承路徑上有一個公共的基類,那麼在繼承路徑的某處

匯合點,這個公共基類別就會在衍生類別的物件中產生多個基底類別子物件

Ø 要讓這個公共基底類別在衍生類別中只產生一個子對象,必須對這個基底類別

宣告為虛繼承,使這個基底類成為虛基類。

Ø 虛繼承宣告使用關鍵字 virtual






實驗:注意增加virtual關鍵字後,建構函式呼叫的次數。

三 繼承總結

Ø 繼承是物件導向程式設計實作軟體重複使用的重要方法。程式設計師可以在已有基底類別的基礎上定義新的衍生類別。

Ø 單繼承的衍生類別只有一個基底類別。多重繼承的衍生類別有多個基底類別。

Ø 衍生類別對基類成員的存取由繼承方式和成員性質決定。

Ø 建立衍生類別物件時,先呼叫基底類別建構子初始化衍生類別中的基底類別成員。呼叫析構函數的次序和呼叫建構函式的次序相反。

Ø C++提供虛繼承機制,防止類別繼承關係中成員存取的二義性。

Ø 多重繼承提供了軟體重用的強大功能,也增加了程式的複雜性。

以上就是c++複習要點總結之九-繼承二的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn