Re: [問題] constructor assignment與initializer

看板C_and_CPP作者 (@@)時間7年前 (2017/11/05 03:48), 編輯推噓2(202)
留言4則, 3人參與, 7年前最新討論串2/2 (看更多)
我猜你要問的是在constructor內對成員賦值的兩種做法 1. 是使用initializer list 2. 在ctor內使用assignment 基本上使用initializer list會有較高的效率 因為在建構一個物件時 其成員的constructor也會被呼叫 而使用initializer list可以在成員的constructor被呼叫之時即賦值 如果使用2的方法 compiler做的事情是對成員呼叫其contructor 然後又再assign新值 因此2的方法效率會較低 P.S. 這個討論的範圍是該成員是一個class 若成員均是primitive type 那麼1跟2的做法效率就差不多 ※ 引述《ab18282099 (poppopjack)》之銘言: : 開發平台(Platform): (Ex: Win10, Linux, ...) : Win10 : 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) : VC++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 問題(Question): : 小弟有以下疑惑: : C++的constructor可以用assignment和initializer兩種寫法,不知道有沒有大神能夠解釋或是說明什麼情況用initializer較佳或assignment較佳,感謝! : 餵入的資料(Input): : 預期的正確結果(Expected Output): : 錯誤結果(Wrong Output): : 程式碼(Code):(請善用置底文網頁, 記得排版) : 補充說明(Supplement): : ----- : Sent from JPTT on my Samsung SM-G930F. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 100.35.220.180 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1509853708.A.1BF.html

11/05 14:39, 7年前 , 1F
可是如果是簡單的 this.foo = new Foo; 應該會滿足 copy
11/05 14:39, 1F

11/05 14:39, 7年前 , 2F
elision 條件, 編譯器會把多餘的那個 copy 省掉
11/05 14:39, 2F

11/05 20:21, 7年前 , 3F
我記得變數若是 const,則不能用 assignment 做初始化?
11/05 20:21, 3F

11/05 22:29, 7年前 , 4F
ref也不行
11/05 22:29, 4F
文章代碼(AID): #1P_eeC6_ (C_and_CPP)
文章代碼(AID): #1P_eeC6_ (C_and_CPP)