成員初始化列表

2021-10-06 11:43:27 字數 1589 閱讀 5248

有const限定的字元不能改變其值,只能在被建立的時候進行初始化,比如

const

int qsize;

qsize =10;

cout << qsize << endl;

錯誤結果如下:

例如 :

int size =10;

int& qsize;

qsize =11;

cout << size << endl;

報錯 :

修改如下 :

int

& qsize = size;

如果queue類中的成員含有const型別和引用型別如下

class

queue

;

建構函式如下 :

queue ::

queue

(int m =10)

這是種不正確的初始化的方法,qsize和qsize都是不能被賦值的,c++中有一種特殊語法成員初始化列表解決.

例如classy是乙個類,mem1,mem2,mem3是這個類的資料成員,則類建構函式可以使用如下語法來初始化資料成員:

classy ::

classy

(int n ,

int m )

:mem1

(n),

mem2(0

),mem3

(n * m +2)

;

在函式名之後加入mem1(n),mem2(0),mem3(n * m + 2),相當於把mem初始化為引數n,mem2初始化為0,mem3初始化為引數n和m的式子:n * m + 2,可以直接對const型別和引用資料成員使用,這種方法只現定於建構函式.

這種方法也適用於常規初始化,例如:

int

games

(162);

int games =

162;

double

games

(162.0);

oduble talk

(162.0

);

c++11中支援類中可以進行初始化,比如

class

classy

;

這跟

classy ::

classy

(int n ,

int m )

:mem1

(n),

mem2(0

),mem3

(n * m +2)

;

所完成的事情等效,前提是你的編譯器支援c++11標準.

成員初始化列表

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

成員初始化列表

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

成員初始化列表

從概念上講,可以認為建構函式分兩個階段執行 1 初始化階段 2 普通的計算階段。計算階段由建構函式函式體中的所有語句組成。不管成員是否在建構函式初始化列表中顯式初始化,類型別的資料成員總是在初始化階段初始化。初始化發生在計算階段開始之前。在建構函式初始化列表中沒有顯式提及的每個成員,使用與初始化變數...