有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 普通的計算階段。計算階段由建構函式函式體中的所有語句組成。不管成員是否在建構函式初始化列表中顯式初始化,類型別的資料成員總是在初始化階段初始化。初始化發生在計算階段開始之前。在建構函式初始化列表中沒有顯式提及的每個成員,使用與初始化變數...