→ coolcomm:為什麼不傳參考= = 02/15 17:12
指說改成 void functionX(vector<mpz_class>&) 嗎?
因為這樣看不出來會更改, 不太想寫成這樣的形式
※ 編輯: suhorng 來自: 118.166.52.23 (02/15 18:13)
→ bachelorwhc:許多編譯器針對return有做過RVO,詳細的要看編譯實作 02/15 18:53
推 LPH66:這個狀況即使 RVO 啟動似乎還是會需要一次 copy 02/15 18:59
瞭解... 謝謝兩位
→ bachelorwhc:我和coolcomn持相同的意見;但我不太懂原PO的意思 02/15 19:03
感覺上使用這樣的函式時, code中比較看不出變數究竟會不會被修改,
除非去查看函數的文件(??)或是 prototype?
※ 編輯: suhorng 來自: 118.166.52.23 (02/15 19:22)
→ linotwo:比較新的編譯器會用 move constructor / assignment 02/15 19:12
我去查查這兩個東西XD 謝謝!
→ bachelorwhc:用const修飾就一目了然,再說其實從函數的命名也能猜 02/15 20:48
→ bachelorwhc:想;另一個方式,可以用pointer避免複製的成本 02/15 20:49
嗯 謝謝 bachelorwhc 大的意見
無論有沒有用 const 修飾, 在呼叫該函式的那段 code 中總看不出來.
命名聽起來很合理XD
※ 編輯: suhorng 來自: 118.166.52.23 (02/15 22:04)
→ AntaresStar:既然c++11 flag on 那應該就會move而不會複製 02/15 22:20
→ adxis:有些 coding standard 會要求使用 X(T* param) 明確表達 X 02/16 14:07
→ adxis:會修改 param ,而不是用 reference 的方式 02/16 14:08
→ adxis:支援 move 的狀況下就放心寫 return value 吧~ 02/16 14:08
謝謝各位提供解法!!
※ 編輯: suhorng 來自: 118.166.52.23 (02/16 17:02)
推 amozartea:傳參考或指標阿 02/18 14:33