C 中類初始值列表與類內初始化

2021-10-09 16:31:58 字數 862 閱讀 7106

類的建構函式的作用是對其成員進行初始化。而在建構函式中可以使用初始值列表為新建立的物件的成員進行賦值。

在類的建構函式名之後緊跟著冒號,冒號後面是要初始化的成員名,之後是圓括號或者花括號括起來的初始值。這樣的結構就是建構函式的初始值列表,如下所示。

class a

; int a;

int b;

};

其中,自定義類a具有乙個包含了初始值列表的建構函式,使用該建構函式建立物件時,該物件的成員變數a的值是1,b的值是2。

對於「1 初始值列表」中提到的自定義類a,如果其還存在多個建構函式,

a(int i) :a(1),b(2) {};

a(int i, int j) :a(1),b(2) {};

a(int i, int j, int z) :a(1),b(2) {};

多個建構函式都包含了相同的初始值列表,**看上去有些冗長。此時可以使用類內初始化的方法對其進行簡化。

類內初始化指的是在定義類的成員時對其賦初值,賦初值的方式有兩種:使用等號賦值和使用大括號賦值。

class a

;};

此時,對於之前提到的包含初始值列表的建構函式,就可以簡寫成如下格式

a(){};

a(int i) {};

a(int i, int j){};

a(int i, int j, int z)  {};

之後無論使用哪一種構造方法來產生該類的物件,這個物件的a和b的值分別是1和2。需要注意的是,類內初始化是c++11的新屬性

類初始化列表

以前在寫 時用初始化列表,因為前輩們說效率更高,也沒有去想為什麼。最近看 item4 確保物件在使用前被初始化,恍然大悟。如果使用賦值的方式在建構函式中初始化 類成員變數 會先呼叫這個 類成員變數 類的預設建構函式,再呼叫賦值函式。而使用初始化列表初始化 類成員變數 只會呼叫這個 類成員變數 類的拷...

類初始化列表

初始化類的成員有兩種方式,一是使用初始化列表,二是在建構函式體內進行賦值操作。使用初始化列表主要是基於效能問題,對於內建型別,如int,float等,使用初始化類表和在建構函式體內初始化差別不是很大,但是對於類型別來說,最好使用初始化列表,為什麼呢?由上面的測試可知,使用初始化列表少了一次呼叫預設建...

類建構函式初始值列表

類的成員可以包括函式和成員變數,如果成員變數沒有顯示的初始化時,則應該最好對他們進行顯示的初始化,而不能靠他們的預設初始化,因為有些變數沒有預設初始值的。現在類成員初始化工作都是靠類的建構函式來完成,類中提供預設建構函式來提供初始化類成員功能,初始化類成員一般有兩種方式,即類成員定義時賦初始值和使用...