[問題] C++初始化為何常使用單冒號?

看板C_and_CPP作者 (DOGE)時間3年前 (2020/11/23 13:18), 編輯推噓5(5013)
留言18則, 7人參與, 3年前最新討論串1/3 (看更多)
有看到有人說這樣效率比較好 但我自己測試來看是看不出差異(可能是我測試方式太簡單) 就我個人來說我是覺得寫在函式裡較為美觀 但是很多網路上的無論是simple code還是教學,在初始化時是比較常看到單冒號的 請問是真的效率上差很多,還是單純風格差異而已? ----- Sent from JPTT on my Asus ASUS_I01WD. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.5.27 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1606108690.A.974.html

11/23 14:06, 3年前 , 1F
一個好處是可以使用initializer list
11/23 14:06, 1F

11/23 15:18, 3年前 , 2F
ref type只能初始化,class如果default ctor 做的事情
11/23 15:18, 2F

11/23 15:18, 3年前 , 3F
多的話也應該會有影響
11/23 15:18, 3F

11/23 15:30, 3年前 , 4F
: 後面是使用 (特定) ctor 初始化, 寫在函式裡則是初始化完
11/23 15:30, 4F

11/23 15:31, 3年前 , 5F
之後再指定一個新東西過去, 語義上有些微的不同
11/23 15:31, 5F

11/23 15:31, 3年前 , 6F
(大約就類似 int x = 5; 跟 int x; x = 5; 的差別)
11/23 15:31, 6F

11/23 15:32, 3年前 , 7F
那因為前者是直接初始化, 能用一些只在這裡用的語法
11/23 15:32, 7F

11/23 15:32, 3年前 , 8F
例如 1F 提的 initializer_list, 2F 提的 ref 初始化等
11/23 15:32, 8F

11/24 00:11, 3年前 , 9F
好像是因為初始化跟assign值是不一樣的概念(階段)?寫在冒
11/24 00:11, 9F

11/24 00:12, 3年前 , 10F
號後頭就在初始化階段直接給值不需要再做assign...
11/24 00:12, 10F

11/24 02:30, 3年前 , 11F
用冒號初始化的先後順序很常常被標準陰......
11/24 02:30, 11F

11/24 05:34, 3年前 , 12F
順序的問題只要記得一定是宣告順序就好
11/24 05:34, 12F

11/24 05:35, 3年前 , 13F
我個人會習慣寫這個冒號列表時就照宣告順序寫這樣不會亂
11/24 05:35, 13F

11/24 07:31, 3年前 , 14F
冒號後面 call constructor,大括號裡面就是 assignment
11/24 07:31, 14F

11/24 07:31, 3年前 , 15F
沒寫在冒號那邊,就多 call 一次 default constructor
11/24 07:31, 15F

11/24 07:32, 3年前 , 16F
const data member 你也沒辦法在大括號裡面才賦值
11/24 07:32, 16F

11/24 21:33, 3年前 , 17F
主要是成員變數如果是const或者reference的話,這是
11/24 21:33, 17F

11/24 21:34, 3年前 , 18F
唯一的初始化跟賦值手段
11/24 21:34, 18F
文章代碼(AID): #1VkqOIbq (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1VkqOIbq (C_and_CPP)