第二十課 初始化列表的使用

2021-09-26 14:27:45 字數 1571 閱讀 8008

學習狄泰軟體學院唐老師c++課程心得,文章內容來自於唐老師課件

問題:類中是否可以定義const成員?

下面的類定義是否合法?

如果合法,ci的值是什麼,儲存在**?

#include class test

};int main()

編譯通過

#include class test

};int main()

報錯:[error] uninitialized const member in 'class test'

那麼,如果在類中初始化乙個const成員?在建構函式進行可行嗎?

#include class test

int getci()

};int main()

報錯,[error] uninitialized const member in 'const int' [-fpermissive]

[error] assignment of read-only member 'test::ci',---->test類中的ci是乙個唯讀成員變數,在c++裡,const作用於成員變數是為唯讀變數。

語法規則:

classname::classname()?/第乙個classname是類作用域。

m1(v1),m2(v1,v2),m3(v3)

v1初始化m1;v1v2初始化m2;v3初始化m3。

#include class test

int getci()

};int main()

編譯通過 ci=10。

注意事項:

類中的const成員的本質是唯讀變數

類中的const成員只能在初始化列表中指定初始值

編譯器無法直接得到const成員的初始值,因此無法進入符號表成為真正意義上的常量。

#include class value

int geti()

};class test

int getci()

int setci(int v)

};int main()

i = 2

i = 3

i = 1

test::test()

t.ci = 100

t.ci = 10

插曲:初始化與賦值不同

總結:

狄泰C 課程學習筆記 第二十課 初始化列表

在c 中,當我們自定義的類中出現了某些特殊型別的成員變數時,為保證初始化過程的正確性,編譯器要求它們的初始化過程必須通過初始化列表來進行,下邊就現有課程已經學到的知識範圍我們簡單來進行分類列舉 1 大概有哪幾種型別的成員變數的初始化工作必須要借助初始化列表來進行 類中的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...

20 初始化列表的使用

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 4.4.5 一 問題 類中是否可以定義const成員?類中可以巨集定義const成員變數,只能通過成員列表進行初始化。二 小實驗 1 下面的類定義是否合法?如果合法,ci的值是什麼,存在在...