[問題] 關於參數初始化

看板C_and_CPP作者 ( )時間12年前 (2011/09/02 02:07), 編輯推噓3(3011)
留言14則, 5人參與, 最新討論串1/1
不好意思,關於參數初始化中 A::A():a(1){} 跟 A::A(){ a = 1;} 這兩者之間的意思是完全一模一樣嗎? 謝謝各位不吝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.121.231

09/02 02:22, , 1F
primitive type沒差, 自定類別語意不同, 觀察呼叫次序
09/02 02:22, 1F

09/02 02:22, , 2F

09/02 02:25, , 3F
A::A(){ a = 1; } 即等於 A::A() :a(){ a = 1; }
09/02 02:25, 3F

09/02 02:26, , 4F
但是primitive type的物件則會喚起trivial ctor, 請仔
09/02 02:26, 4F

09/02 02:27, , 5F
細翻閱文法書
09/02 02:27, 5F

09/02 09:22, , 6F
A::A():a(1){}→初始化 A::A(){ a = 1;}→賦值
09/02 09:22, 6F

09/02 09:22, , 7F
機制不同!簡單情況是等效,複雜情況就不等效。
09/02 09:22, 7F

09/02 10:38, , 8F
舉個例子,如果你的a是const就只能用初始化
09/02 10:38, 8F

09/02 10:40, , 9F
這個我之前有問過,可以參考17216篇
09/02 10:40, 9F

09/02 10:40, , 10F
抱歉我不知道該怎樣用#的那個,麻煩自己轉了...
09/02 10:40, 10F

09/02 10:45, , 11F
文章前按大Q
09/02 10:45, 11F

09/02 10:57, , 12F
會了!感謝
09/02 10:57, 12F

09/02 11:30, , 13F
感謝 你們很詳細的講解!!!! 謝謝
09/02 11:30, 13F

09/04 08:41, , 14F
Please google "Member initialization list"
09/04 08:41, 14F
文章代碼(AID): #1ENydaSm (C_and_CPP)