定義派生類複製建構函式

2021-08-21 07:31:43 字數 571 閱讀 4772

如果派生類顯示定義自己的複製建構函式或賦值操作符,則該定義將完全覆蓋預設

定義。被繼承類的複製建構函式和賦值操作符負責對基類成分以及類自己的成員進行

複製或賦值。

如果派生類定義了自己的複製建構函式,該複製建構函式一般應顯式使用基類

複製建構函式初始化物件的基類部分。

class base ;

class derived : public base

初始化函式base( d ) 將派生類物件d轉換為他的基類部分的引用,並呼叫基類複製建構函式

如果省略基類初始化函式,如下**

// probably incorrect definition of the derived copy constuctor

derived ( const derived & d ) /* derived member initizations*/

效果是執行base 的預設建構函式初始化物件的基類部分。假定derived 成員的初始化從d

複製對應成員,則新構造的物件具有奇怪的配置:他的base部分儲存預設值,而他的derived成員是

另一物件的副本。

派生類建構函式

1 建構函式和複製控制成員不能繼承,每個類定義自己的建構函式和複製控制成員。像任何類一樣,如果類不定義自己的預設建構函式和複製控制成員,就將使用合成版本。2 派生類的合成預設建構函式除了初始化派生類的資料成員之外,它還初始化派生類物件的基類部分。基類部分由基類的預設建構函式初始化。3 派生類建構函式...

派生類 建構函式

在hpp標頭檔案中,宣告建構函式中,必須為新增的資料成員和基類的資料成員提供資料,即每乙個形參代表乙個成員 派生類宣告建構函式入下,其中r是給新增的資料,後面是基類的成員。在cpp檔案定義的時候,必須建立基類的物件,即如果不是預設的物件,則必須顯示的建立基類的物件,將資料傳遞給基類的物件 如下圖 t...

派生類的建構函式和複製控制

因為派生類是從基類繼承而來的,所以包含了基類的一些成員,所以在寫派生類的建構函式和複製控制函式時,必須考慮基類的影響。先說建構函式,派生類的建構函式中,並不直接初始化基類的成員,而是呼叫基類的建構函式初始化基類的部分 class item base void func2 item base obj ...