成員初始化列表以及靜態私有變數初始化

2021-09-27 13:03:32 字數 752 閱讀 5504

在乙個類中,我們往往可能會定義乙個靜態變數,但在宣告乙個類的時候不會進行記憶體的申請,只有在進行物件定義的時候才會進行記憶體申請,但問題來了,在程式進行到建構函式的時候,要對靜態變數進行初始化,但因為是const靜態變數,不能改變其初始值,會出現錯誤。因此,必須在執行建構函式之前,在建立物件時進行初始化。

c++提供了成員初始化列表語法來實現這個功能。

在建構函式定義處新增上冒號,並由逗號分割初始化列表。要初始化的變數後加括號,裡面是初始化的值。

只有建構函式可以使用初始化列表語法

class queue

; enum;

node * front;

node * rear;

int items;

const int qsize;

public:

//queue();

queue(int qs = q_size);

};

queue::queue(int qs):qsize(qs),front(null),rear(null),items(0)

如果是被宣告為引用的類成員,也必須使用這樣的語法

class aaa

;class bbb

;bbb::bbb(aaa & s):ccc(s)

當然,c++也支援類內初始化,即在類宣告的時候就對變數進行初始化。

初始化列表成員變數的初始化

對於以下程式 include using namespace std class base base b 0 a b int get a int get b int main 本想得到的結果是a,b都為90。但是實際結果卻是 4273046 90process returned 0 0x0 exec...

成員初始化列表

類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 初始化階段可以是顯式的或隱式的,取決於是否存在成員初始化表。隱式初始化階段按照宣告的順序依次呼叫所有基類的預設建構函式,然後是所有成員類物件的預設建構函式。2.進入建構函式後在建構函式中執行一般計算 計算階段由建...

成員初始化列表

任乙個物件的建立都要呼叫建構函式,而在建構函式中一般要給物件屬性賦值。成員初始化列表 member initialize list 是建構函式中特有的語法,用以簡化對物件屬性的賦值。其用法如下 class myclass 以上 相當於 class myclass 用成員初始化列表的語法來表述很顯然 ...