C 知識點複習 初始化列表的使用

2021-10-25 17:14:37 字數 1212 閱讀 3105

問題引入:

類中是否可以定義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 初始化列表 建構函式的兩個執行階段 從概念上來講,建構函式的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先於計算階段 初始化階段 所有...