[問題] Overloading assignment

看板C_and_CPP (C/C++)作者 (奇怪 還沒收到??)時間16年前 (2010/05/11 17:33), 編輯推噓0(0021)
留言21則, 3人參與, 最新討論串1/1
請問 overloading = 回傳需要& 嗎? 也就是 XXX & XXX::operator = (parameter list) //XXX:某個class 這裡 ******************************** 就算是A=B=C; B=C的結果也會是r-value 不會是l-value 為什麼還要 & 還是可以不必? 那要的原因又是什麼呢? 謝謝>"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.22.26

05/11 17:51, , 1F
通常copy assignment & copy ctor 要一起實作, 不然編
05/11 17:51, 1F

05/11 17:51, , 2F
譯器預設是用 member-wise的方式一個一個複製出新的
05/11 17:51, 2F

05/11 17:53, , 3F
物件, 參考程式碼: http://tinyurl.com/262k5cy , 雖
05/11 17:53, 3F

05/11 17:53, , 4F
然回傳值也是可以, 但是在物件很龐大的時候速度將會
05/11 17:53, 4F

05/11 17:54, , 5F
大哥...可以白話一點嗎... 小弟看不太懂您說的.......
05/11 17:54, 5F

05/11 17:55, , 6F
也就是說也可以不加 & 就是了 但是一般來說因為某些原因
05/11 17:55, 6F

05/11 17:55, , 7F
如您所述 所以我們要加?
05/11 17:55, 7F

05/11 17:56, , 8F
很慢, 假如用這個語法 : http://tinyurl.com/2bob7h8
05/11 17:56, 8F

05/11 17:57, , 9F
因為你產生了複製出來的(暫時)物件, 在分號結束就解構
05/11 17:57, 9F

05/11 17:58, , 10F
產生的行為將會是未定義的, 覆寫運算子的時候必須考慮
05/11 17:58, 10F

05/11 17:59, , 11F
到所有可能的用法, 不然產生錯誤也不知道, 為了符合內
05/11 17:59, 11F

05/11 18:00, , 12F
建運算子的語法, 以及為了速度考慮, 管理的考量(不要
05/11 18:00, 12F

05/11 18:01, , 13F
隱含呼叫其他函式), 所以都該回傳參考
05/11 18:01, 13F

05/11 18:04, , 14F
那請問您(你好強xd...) 哪些operator的overloading return
05/11 18:04, 14F

05/11 18:04, , 15F
應該要是 reference?
05/11 18:04, 15F

05/11 18:04, , 16F
我知道有>> <<
05/11 18:04, 16F

05/11 18:08, , 17F

05/11 18:14, , 18F
通常都是你想 return *this 的狀況下才會 return ref。
05/11 18:14, 18F

05/11 18:15, , 19F
其它你不會想 return *this 的狀況,return ref 通常也不
05/11 18:15, 19F

05/11 18:15, , 20F
合法,所以你一看就會知道不是 return ref。
05/11 18:15, 20F

05/11 18:16, , 21F
Oh~ Thank you! 沒想到wiki 這麼好用.......我好蠢.......
05/11 18:16, 21F
文章代碼(AID): #1BwIHf1j (C_and_CPP)
文章代碼(AID): #1BwIHf1j (C_and_CPP)