(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...