[問題] 回傳參考

看板C_and_CPP (C/C++)作者 (沒有暱稱)時間11年前 (2014/12/05 02:38), 編輯推噓4(4010)
留言14則, 4人參與, 最新討論串1/1
http://codepad.org/twicEudY 我對參考的概念還停留在 它是一個變數的別名 可以當參數傳遞(call by reference) 可以有多個回傳值的效果等等 可是我看不懂把一個函式當成參考回傳的意思 如果接收的人是宣告成參考 counter &a =++i; 以正常來看很好瞭解 a等於i(itsval+1 的i)了 而且兩者的位址相同 不過這程式的要求僅僅是把itsval的值複製給新的物件a 但是我不知道要如何去解讀它 const counter& counter::operator++() { ++itsval; return *this; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.25.168 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1417718298.A.D96.html

12/05 02:42, , 1F
這應該是operator overloading的用法吧?
12/05 02:42, 1F

12/05 03:36, , 2F
是吧 但有什麼跟一般函式不一樣的地方嗎?
12/05 03:36, 2F

12/05 03:37, , 3F
純粹只是把++當成函式名稱在使用吧?
12/05 03:37, 3F

12/05 06:26, , 4F
跟傳參數的意思一樣啊, 外面看到的回傳"物件"就是裡面這個
12/05 06:26, 4F

12/05 06:26, , 5F
運算所得到的物件, 在此就是指自己本身
12/05 06:26, 5F

12/05 12:17, , 6F
那為什麼有時候接收者可以宣告成參考有時不用(像現在)
12/05 12:17, 6F

12/05 12:38, , 7F
就意圖不同啊,如果 counter a= ++i; 這樣,就是有兩套
12/05 12:38, 7F

12/05 12:39, , 8F
實體,這樣 const counter& a= ++i; 則只有一個實例
12/05 12:39, 8F

12/05 14:47, , 9F
可是不宣告成&效果一樣
12/05 14:47, 9F

12/05 17:45, , 10F
效果一樣但是用到的資源量不一樣呀!
12/05 17:45, 10F

12/05 17:47, , 11F
今天 一個int 和 一百萬個int,by value和by reference差
12/05 17:47, 11F

12/05 17:47, , 12F
很多
12/05 17:47, 12F

12/06 02:34, , 13F
我找了不同書看 發現有很多不同的觀點
12/06 02:34, 13F

12/06 02:34, , 14F
我先看看再發問好了 謝謝
12/06 02:34, 14F
文章代碼(AID): #1KWAeQsM (C_and_CPP)
文章代碼(AID): #1KWAeQsM (C_and_CPP)