[問題] operator= overloading

看板C_and_CPP作者 (Lucius)時間15年前 (2010/06/25 13:13), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串1/2 (看更多)
這是書上的例題, 有個觀念請教 若要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)

06/25 13:26, , 1F
avoid不就是要"避免"的意思嗎?
06/25 13:26, 1F

06/25 14:35, , 2F
平常寫 x = y = z 是 x = (y = z)
06/25 14:35, 2F

06/25 14:38, , 3F
這個人單純只是希望 (x = y) = z 不能編過而已。
06/25 14:38, 3F

06/25 16:39, , 4F
謝謝解答~!
06/25 16:39, 4F
文章代碼(AID): #1C93hrGo (C_and_CPP)
文章代碼(AID): #1C93hrGo (C_and_CPP)