問題引入:
類中是否可以定義const成員?
下面的類定義是否合法?
如果合法,ci的值是什麼,儲存在**?
示例:
#include
class
test
intgetci()
}int
main()
c++中提供了初始化列表對成員變數進行初始化
語法規則:
classname::classname() : m1(v1), m2(v1, v2), m3(v3)
注意事項:
成員的初始化順序與成員的宣告順序相同
成員的初始化順序與初始化列表中的位置無關
初始化列表先於建構函式的函式體執行
示例:
#include
class
value
intgeti()
};class
test};
intmain()
編譯結果:
i =2
;i =3;
i =1
;test::
test
()
類中的const成員:
類中的const成員會被分配空間,並且和整個類物件分配的空間一致。
類中的const成員的本質是唯讀變數。
類中的const成員只能在初始化列表中指定初始值。
編譯器無法直接得到const成員的初始值,因此無法進入符號表成為真正意義上的常量。
示例:唯讀成員變數
#include
class
value
intgeti()
};class
test
intgetci()
intsetci
(int v)};
intmain()
編譯結果:
i =2
;i =3;
i =1
;test::
test()
t.ci =
100t.ci =
10
小節:
類中可以使用初始化列表對成員進行初始化
初始化列表先於建構函式體執行
類中可以定義const成員變數
const成員變數必須在初始化列表中指定初值
const成員變數為唯讀變數
c 使用初始化列表來初始化字段
includeusing namespace std class student1 student1 int i b i a b 異常順序 發現a的值為0 b的值為2 說明初始化僅僅對b有效果,對a沒有起到初始化作用 student1 int a,int b a a b b 正常順序 發現a b 2...
C 的初始化列表的使用
我的問題是關於初始化 c 類成員的.我見過許多這樣的 包括在你的欄目中也見到過 csomeclass csomeclass 而在別的什麼地方則寫成下面的樣子 csomeclass csomeclass x 0 y 1 我的一些程式設計師朋友說第二種方法比較好,但他們都不知道為什麼是這樣.你能告訴我這...
c 初始化列表
與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。struct foo 初始化列表 建構函式的兩個執行階段 從概念上來講,建構函式的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先於計算階段 初始化階段 所有...