作者jehovah (Lucius)
看板C_and_CPP
標題[問題] operator= overloading
時間Fri Jun 25 13:13:22 2010
這是書上的例題, 有個觀念請教
若要overloading = 符號,
讓自訂的Array 型別可以實現 Array1=Array2
書本給的程式碼簡化如下:
class Array
{
public:
const Array& operator=(const Array&);
略
};
//const return avoids: (x=y)=z
const Array& Array::operator=(const Array& a)
{
略
return *this; //enable cascading x=y=z
}
我的疑問是為何此函式要傳回 const 的參考?
註解說的avoid (x=y)=z 這邊我不太明白
如果傳回const 參考..那(x=y)會傳回const的x參考
則再做x=z時不就無法執行了嗎
還是我的觀念有什麼錯誤:)
可以幫我解釋一下在此 const ref與non-const ref 造成的差異嗎
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.69.128.66
※ 編輯: jehovah 來自: 210.69.128.66 (06/25 13:20)
→ james732:avoid不就是要"避免"的意思嗎? 06/25 13:26
→ tinlans:平常寫 x = y = z 是 x = (y = z) 06/25 14:35
→ tinlans:這個人單純只是希望 (x = y) = z 不能編過而已。 06/25 14:38
→ jehovah:謝謝解答~! 06/25 16:39