[問題] 參數前面加上一個 &

看板C_and_CPP (C/C++)作者 (奇怪 還沒收到??)時間14年前 (2011/12/04 23:29), 編輯推噓2(2017)
留言19則, 6人參與, 最新討論串1/1
請問一下c++中,在傳資料時 出現了 void foo(Car &a_car) { a_car.getName(); } Car 是一個class, getName是他的一個method. 1.請問Car &a_car 是什麼? "取a_car的位置"嗎? 2.還是應該Car & 看成一個data type? 就像 Car *是一個指向Car 的pointer 3.所以Car &是? 在invoke foo時, 應該pass什麼呢? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.155.193

12/04 23:36, , 1F
"reference"
12/04 23:36, 1F

12/04 23:49, , 2F
參照,是某個物件的別名(alias)。
12/04 23:49, 2F

12/05 01:58, , 3F
想像成是一個新的 data type 跟 Car 用法一模一樣
12/05 01:58, 3F

12/05 01:59, , 4F
但是只有一個建構函式 Car( const Car& cr );
12/05 01:59, 4F

12/05 02:00, , 5F
作用是把自己的記憶體位誌改得跟 cr 一樣
12/05 02:00, 5F

12/05 02:02, , 6F
建構後就把它當成 cr 用,以上提供僅供理解
12/05 02:02, 6F

12/05 02:02, , 7F
實際上應該不是這樣做的,理解後就跟樓上講的一樣當別名用
12/05 02:02, 7F

12/05 22:05, , 8F
請問 所以是相當於pass by reference嗎?可能會改到callee
12/05 22:05, 8F

12/05 22:05, , 9F
pass進來的data?
12/05 22:05, 9F

12/06 02:40, , 10F
不是很懂你問的,不過既然是別名,動他等於動本尊
12/06 02:40, 10F

12/06 13:26, , 11F
http://ppt.cc/MIwK 你需要的是找個網站好好了解
12/06 13:26, 11F

12/06 20:10, , 12F
我寫的參考一下 http://disp.cc/b/11-M5
12/06 20:10, 12F

12/07 21:20, , 13F
knuckles 你寫的好清楚! 我了解了 pass by reference 在
12/07 21:20, 13F

12/07 21:20, , 14F
C++中 就和Java的pass by ref 是一樣的嗎? 只是語法上略略
12/07 21:20, 14F

12/07 21:20, , 15F
不同. 不過如果是這樣<
12/07 21:20, 15F

12/07 21:21, , 16F
我猜想 pass by ref 是為了要讓使用者去掉不清楚 * &兩個
12/07 21:21, 16F

12/07 21:21, , 17F
operator 的貼心行為吧? 所以說 pass by ref 的行為和
12/07 21:21, 17F

12/07 21:22, , 18F
pass by address 所產生的行為也是一樣的八?
12/07 21:22, 18F

12/07 21:24, , 19F
也謝謝其他版友
12/07 21:24, 19F
文章代碼(AID): #1Esv7GHm (C_and_CPP)
文章代碼(AID): #1Esv7GHm (C_and_CPP)