[問題] 請問這種寫法是什麼意思??

看板C_and_CPP作者 (ckvir)時間12年前 (2013/04/13 16:40), 編輯推噓3(3013)
留言16則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 最近在學C++ 但是看到網路上有一種寫法,不知道是什麼意思 他是寫在HelloWorld.h裡面的 _a = new Array; _b = new Array; HelloWorld::HelloWorld() :_a(NULL) <= ,_b(NULL) <= { } 我箭頭指的那兩行是什麼意思?? 為什麼能寫在大括號外面? 前面又有冒後和逗點? 有想上網查 可是又不知道怎麼下關鍵字 謝謝 ※ 編輯: ckvir 來自: 1.170.12.44 (04/13 16:41)

04/13 16:41, , 1F
好像是跟init有關的,有點忘記@_@
04/13 16:41, 1F

04/13 16:43, , 2F
initialization list
04/13 16:43, 2F

04/13 16:43, , 3F
就是建構子初始化的一種簡潔寫法
04/13 16:43, 3F

04/13 16:46, , 4F
喔喔 我用2樓大的關鍵字查一下 THX
04/13 16:46, 4F

04/13 17:22, , 5F
在建構子中 initialization list 跟在{}中用
04/13 17:22, 5F

04/13 17:22, , 6F
= 給值是不同的
04/13 17:22, 6F

04/13 17:24, , 7F
要初始化就直接用 initialization list
04/13 17:24, 7F

04/13 17:29, , 8F
initialization list 可以用來初始化 const
04/13 17:29, 8F

04/13 17:29, , 10F
04/13 17:29, 10F

04/13 18:32, , 11F
他是在allocate位置的時候直接填值進去了
04/13 18:32, 11F

04/13 18:32, , 12F
理論上效率比較快
04/13 18:32, 12F

04/14 01:24, , 13F
倒不是效率的問題 (畢竟如果只是值的話裡外沒差)
04/14 01:24, 13F

04/14 01:24, , 14F
有差的地方是在於這個寫法才能使成員變數物件使用ctor初始化
04/14 01:24, 14F

04/14 01:25, , 15F
在裡面用 = 給值的話會變成先做了一個空物件再指定過去
04/14 01:25, 15F

04/15 00:42, , 16F
成員是const或者需要ctor的實體也只能用IL init
04/15 00:42, 16F
文章代碼(AID): #1HQHeCg6 (C_and_CPP)