[問題] C++ 增加傳參考的動機是什麼?

看板C_and_CPP作者 ( )時間10年前 (2015/12/20 20:20), 編輯推噓4(406)
留言10則, 5人參與, 最新討論串1/1
問題(Question): 在呼叫函式中, C 本來就有Call by value 和 Call by value of pointer 的功能 請問為什麼C++ 還要增加Call by reference的功能? 因為Call by reference 和 Call by value of pointer 這兩種呼叫方式 都會修改到原本的變數, 而且當變數個數很多或值很巨大時, 也有節省記憶體空間的功用 似乎看不出為什麼要發明Call by reference的動機, 煩請解惑 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.189.197.194 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1450614009.A.6E0.html

12/20 20:22, , 1F
我覺得是1.在function內不用打(*ptr)-> 這種醜樣子
12/20 20:22, 1F

12/20 20:23, , 2F
2.pointer可能會不知道指到哪裡去
12/20 20:23, 2F

12/20 20:24, , 3F
不用檢查是不是nullptr,不能改變reference object
12/20 20:24, 3F

12/20 20:24, , 4F
使用上就如同一般object,而且也不用new與delete
12/20 20:24, 4F

12/20 20:25, , 5F
抱歉 1.是指(*ptr). 或是 ptr->
12/20 20:25, 5F

12/20 20:33, , 6F
謝謝回答:-)
12/20 20:33, 6F

12/21 10:11, , 7F
增加reference type的主要原因在於operator overload
12/21 10:11, 7F

12/21 10:11, , 8F
像 std::vector 的 operator[],不回傳ref會很難用
12/21 10:11, 8F

12/21 10:12, , 9F
可以參考一下C++ FAQ https://goo.gl/eZsppS
12/21 10:12, 9F

12/21 11:48, , 10F
只要一個&就好很方便啊O'_'O
12/21 11:48, 10F
文章代碼(AID): #1MTfpvRW (C_and_CPP)