1、建構函式、賦值運算子與析構函式不能被繼承
派生類首先是類,因此需要宣告自己的建構函式與析構函式。派生類可呼叫基類建構函式但不可繼承。
2、派生類建構函式必須呼叫基類建構函式,且只能通過成員初始化列表呼叫基類建構函式
a) 派生類不能直接訪問基類私有成員,必須通過基類公有方法。因此派生類建構函式必須呼叫基類建構函式來初始化成員。
b) 建立派生類物件前,程式首先建立基類物件,因此進入派生類建構函式前必須完成基類物件建立,所以只能通過成員初始化列表傳參完成基類物件建立。
3、若派生類建構函式成員初始化列表沒有呼叫基類建構函式,則使用基類預設建構函式。
例子:
//.h
#include
using namespcae std;
child :
public base
//cpp
child::
child
(const string & a,
int b)
:base
(a),
count
(b)// 顯式指明呼叫base(a)基類建構函式
child::
child
(const string & a,
int b)
:count
(b)// 隱式呼叫基類預設建構函式,傳遞的引數a沒有使用
child::
child
(int b,const base& base)
:base
(base)
,count
(b)// 顯式指明呼叫base(base)基類複製建構函式
child& child::
child
(const child& b)
:base
(b),
count
(b.count)
//派生類複製建構函式顯式呼叫基類複製建構函式,
//派生類的預設建構函式也指向如上操作,因此可以不定義該派生類複製建構函式
注:基類指標/引用指向派生類物件,只能呼叫基類方法,該物件的派生類方法、成員變數不可呼叫。
用派生類物件初始化或賦值給基類物件,則將派生類物件中基類部分進行賦值,派生類獨有的部分(函式、成員變數)丟棄
派生類建構函式
1 建構函式和複製控制成員不能繼承,每個類定義自己的建構函式和複製控制成員。像任何類一樣,如果類不定義自己的預設建構函式和複製控制成員,就將使用合成版本。2 派生類的合成預設建構函式除了初始化派生類的資料成員之外,它還初始化派生類物件的基類部分。基類部分由基類的預設建構函式初始化。3 派生類建構函式...
派生類 建構函式
在hpp標頭檔案中,宣告建構函式中,必須為新增的資料成員和基類的資料成員提供資料,即每乙個形參代表乙個成員 派生類宣告建構函式入下,其中r是給新增的資料,後面是基類的成員。在cpp檔案定義的時候,必須建立基類的物件,即如果不是預設的物件,則必須顯示的建立基類的物件,將資料傳遞給基類的物件 如下圖 t...
派生類的建構函式
派生類的資料成員由所有基類的資料成員與派生類新增的資料成員共同組成,如果派生類新增成員中包括其他類的物件 子物件 派生類的資料成員中實際上還間接包括了這些物件的資料成員。因此,構造派生類的物件時,必須對基類資料成員 新增資料成員和成員物件的資料成員進行初始化。派生類的建構函式必須要以合適的初值作為引...