派生類的初始化列表

2021-06-24 11:45:03 字數 490 閱讀 9678

說明派生類物件時,

1、先呼叫各基類的建構函式:這裡分兩種情況

1.1 顯式地在初始化列表中呼叫基類的建構函式,如 b():a(int )...這樣的話,就呼叫a的有參建構函式

1.2 沒有顯式呼叫,編譯器把基類的預設建構函式插入到初始化列表中,即b()  => b():a()

2、再呼叫物件成員的建構函式:這裡分兩種情況

2.1 在初始化列表中,則直接呼叫拷貝建構函式

2.2 不在初始化列表中,則先呼叫物件成員的預設建構函式。如果物件成員沒有預設建構函式,會出錯。

3、最後呼叫派生類的建構函式

#include #include #include using namespace std;

class a

{ int i;

public:

a(){ cout<<"default a"<

派生類不能在成員初始化列表中直接初始化基類的成員

派生類不能在成員初始化列表中直接初始化基類的成員 初始化基類成員 建構函式是不可繼承的。因此,派生類的建構函式必須通過呼叫基類的建構函式初始化基類成員,不能夠在派生類初始化列表直接初始化基類的成員,越級初始化 派生類的建構函式的一般格式為 派生類名 形參表 基類名1 形參表1 基類名2 形參表2 注...

派生類物件初始化構造過程順序

cpp view plain copy include using namespace std class a class b a intmain void 1.定義乙個派生類物件,首先初始化它的基類成員 基類部分 即呼叫基類的建構函式 如果是多繼承,則按繼承的先後順序呼叫基類的建構函式 2.基類部...

C 派生類中如何初始化基類物件

今天收到盛大的面試,問我乙個問題,關於派生類中如何初始化基類物件,我在想派生類對於建構函式不都是先構造基類物件,然後在構造子類物件,但是如果我們在成員初始化列表先初始化派生類的私有成員,在函式內去呼叫基類的建構函式,能編譯通過嗎?或者當我們定義了基類的預設建構函式,而沒有去在派生類的建構函式中顯示的...