二. 派生類的建構函式和析構函式
~~~~~~
繼承,就是從先輩處得到屬性和行為的特徵。類的繼承就是新的類從已有的類那裡得到已有的特性。從另乙個角度來看問題,從已有類產生新類的過程就是類的派生。
~~~~~~
基類和派生類的關係,可以表述為:派生類是基類的具體化,而基類是派生類的抽象。
~~~~~~
格式為:
class 派生類名:
[繼承方式] 基類
;
「基類名」是乙個已經宣告的類的名稱,「派生類名」是繼承原有類的特性而生成的新類的名稱。「繼承方式」規定了如何訪問從基類中繼承的成員,他可以是關鍵字:private, protected, public,分別表示私有繼承,保護繼承和共有繼承,預設為私有繼承。
基類中的私有成員。無論哪種繼承方式,基類中的私有成員不允許派生類繼承,即在派生類中不可直接訪問。
基類中的共有成員:
公有繼承時,基類中的所有公有成員在派生類中仍以公有成員的身份出現。
私有繼承時,基類中的所有公有成員在派生類中仍以私有成員的身份出現。
保護繼承時,基類中的所有公有成員在派生類中仍以保護成員的身份出現。
基類中的保護成員:
公有繼承時,基類中的所有保護成員在派生類中仍以保護成員的身份出現。
私有繼承時,基類中的所有保護成員在派生類中都是以私有成員的身份出現。
公有繼承時,基類中的所有保護成員在派生類中仍以保護成員的身份出現。
私有繼承的訪問規則
基類中的成員
私有成員
公有成員
保護成員
訪問方式(內部訪問)
不可訪問
可訪問可訪問
訪問方式 (物件訪問)
不可訪問
不可訪問
不可訪問
公有繼承的訪問規則
基類中的成員
私有成員
公有成員
保護成員
訪問方式(內部訪問)
不可訪問
可訪問可訪問
訪問方式 (物件訪問)
不可訪問
可訪問不可訪問
保護繼承的訪問規則
基類中的成員
私有成員
公有成員
保護成員
訪問方式(內部訪問)
不可訪問
可訪問可訪問
訪問方式 (物件訪問)
不可訪問
不可訪問
不可訪問
~~~~~~
建構函式的主要作用是對資料進行初始化。但是基類的建構函式和析構函式不能被繼承,因此我們必須在派生類的建構函式中對基類的建構函式所需要的引數進行設定。
~~~~~~
建構函式的呼叫嚴格地按照先呼叫基類的建構函式,後呼叫派生類的物件進行,析構函式的呼叫順序於建構函式的呼叫順序正好相反,先呼叫派生類的析構函式,再呼叫基類的建構函式。
~~~~~~
派生類的建構函式的一般規則:
派生類名(引數總表)
: 基類名(參數列)
【例 1】
#include
using namespace std;
class b~b
()intshow_b()
};class d:public b~d
()intshow_d()
};intmain()
結果如下:
c base
c derived
6050
d derived
d base
~~~~~~
一般形式:
派生類名(引數總表)
:基類名(參數列0
),子物件名1
(參數列1),
....
,子物件名n(參數列n)
建構函式的呼叫順序:
撤銷物件的時候,析構函式的呼叫順序與建構函式的呼叫順序剛好相反。首先呼叫派生類的析構函式,在呼叫子物件的析構函式,最後呼叫基類的析構函式。
c 繼承和派生
通常子類不加修飾的延續父類的特徵,我們把它叫做繼承 而子類在延續父類特徵的基礎上又新增自己的新特徵,叫做派生。擁有乙個基類的繼承是單一繼承,擁有多個基類的繼承是多重繼承。class 派生類名 派生型別 基類名 注 括號內是派生類自己的成員和成員函式。乙個類的私有成員只能被它的成員函式和友員訪問,不能...
C 繼承和派生
在c 語言中,乙個 派生類可以從乙個 基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為 多繼承。派生類的定義格式 單繼承的定義格式如下 1 2 3 4 class 派生類名 繼承方式 基類名 public 表示公有繼承 private 表示私有繼承 prote...
C 繼承和派生
1 繼承概念 1 繼承是類之間定義的一種重要關係 2 基本語法 class child public parent1,public parent2 3 parent稱基類 父類 child稱派生類 子類 4 繼承方式 public,private,protected.5 重要說明 a 子類擁有父類的...