推 LPH66: 我認為都對, 兩種狀況都會出現 12/02 03:20
→ LPH66: 不過對呼叫方跟被呼叫方來說兩者沒有差別就是了 12/02 03:21
→ LPH66: 所以編譯器會選適合的時候使用適合的策略 12/02 03:21
→ LPH66: 事實上對 C++ 的物件傳值的話, 語意上傳進是 2, 傳出是 1 12/02 03:22
→ LPH66: 而實際上傳出時會不會真用 1 這樣傳則不一定 12/02 03:23
→ LPH66: 這有個關鍵字叫「Return Value Optimization」 12/02 03:24
推 littleshan: 只要達到call by value的效果 (函式內改變不影響原值) 12/02 10:58
→ littleshan: compiler可以採用任何方法去做 12/02 10:58
→ littleshan: 目前常見的做法是LPH66所說的那樣 12/02 10:59
→ littleshan: 但也可能直接用register傳參數以提高傳遞效率 12/02 11:00
→ littleshan: 除非你自己要做compiler或是寫很底層的東西 12/02 11:01
→ littleshan: 不然其實不需要去管compiler怎麼幫你做 12/02 11:02
→ azureblaze: "Copy elision" 12/02 11:33
→ anoymouse: 好吧 我先查查你們說的關鍵字 謝謝! 12/02 12:49
推 Killercat: 其實寫個小程式 g++ -S就知道了... 不過上面大家說得對 12/02 15:57
→ Killercat: 這東西並沒有定義要怎麼實作 12/02 15:58