建構函式初始化表的使用規則

2021-04-22 02:53:08 字數 664 閱讀 9320

(1)如果類存在繼承關係,派生類必須在其初始化表裡呼叫基類的建構函式。

class a

;class b : public a

;//如果a沒有預設建構函式,必須在初始化表裡呼叫a的建構函式.

b::b(int x, int y)   

:a(x)       

(2)類的const常量只能在初始化表裡被初始化,因為它不能在函式體內用賦值的方式來初始化。

class a

;a::a(int size)

:size(size)

(3)類的資料成員的初始化可以採用初始化表或函式體內賦值兩種方法,這兩種方法的效率不完全相同。

非內部函式資料型別的成員應當採用第一種方式初始化,以獲取更高的效率。

class a

;class b

;b::b(const a &a)

:m_a(a)

對於內部資料型別的資料成員而言,兩種初始化方式的效率幾乎沒有區別,但後者的版式更清楚。

class f

;f::f(int x, int y)

(4)在初始化列表中不能對陣列元素進行初始化

class a

;private:

int arr[2];

};上面的例子編譯通不過,只是經驗,但具體原因還未找到。

建構函式和初始化表

1.無參構造 預設建構函式 無參並非嚴格的沒有引數的建構函式,而是不需要提供實際引數的建構函式,比如存在有預設引數 integer integer int a 10 也算是預設建構函式,可以無參呼叫。integer p1 new integer integer p2 new integer inte...

建構函式和初始化表

include class account 注意 建構函式的初始化列表只在建構函式的定義中指定,而不在宣告中指定 inline account account const char name,double opening bal name name balance opening bal 成員初始化...

9 2 建構函式的初始化表

建構函式有個特殊的初始化方式叫 初始化表示式表 簡稱初始化表 初始化表位於函式引數表之後,卻在函式體 之前。這說明該表裡的初始化工作發生在函式體內的任何 被執行之前。建構函式初始化表的使用規則 如果類存在繼承關係,派生類必須在其初始化表裡呼叫基類的建構函式。例如class a class b pub...