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

2021-08-27 02:09:40 字數 618 閱讀 6860

因為派生類是從基類繼承而來的,所以包含了基類的一些成員,所以在寫派生類的建構函式和複製控制函式時,必須考慮基類的影響。

先說建構函式,派生類的建構函式中,並不直接初始化基類的成員,而是呼叫基類的建構函式初始化基類的部分:

class item_base

void func2(item_base& obj){}

item_base func3()

這三個函式看起來並沒有做什麼實質性的工作,但他們很有代表新:前兩個接受的分別是基類的物件和基類物件的引用,第三個的返回值是基類的物件,下面我們看看主程式:

int main()

程式的注釋部分說明了具體的功能。值得注意的是:

1.如果將用派生類實參呼叫形參為基類引用的函式,並不會發生派生類到基類的型別轉化,因為引用直接繫結到派生類上,物件並沒有「型別轉化」,只是將派生類的基類部分的位址傳遞給基型別的引用。

2.如果將派生類實參傳遞給乙個基類形參的函式,先將派生類隱式轉化成基類物件,然後呼叫基類複製建構函式將實參傳給形參。

3.用派生類初始化基類時,派生類將轉化為基類,然後呼叫基類的複製建構函式處理。

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

複製成員和建構函式是不能被繼承的。每個類定義自己的,如果沒有,編譯器將自己生成。派生類物件由派生類中定義的 非static 成員加上乙個或者多個基類子物件構成,因此影響是派生類物件的一些操作,對於它的操作同時也會對基類物件進行操作。只影響其直接基類的物件的操作。一 派生類的建構函式 派生類的建構函式...

定義派生類複製建構函式

如果派生類顯示定義自己的複製建構函式或賦值操作符,則該定義將完全覆蓋預設 定義。被繼承類的複製建構函式和賦值操作符負責對基類成分以及類自己的成員進行 複製或賦值。如果派生類定義了自己的複製建構函式,該複製建構函式一般應顯式使用基類 複製建構函式初始化物件的基類部分。class base class ...

派生類建構函式

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