[問題] 運算子多載一問

作者: d630200x (DOGE)   2018-06-17 18:17:08
在一般運算子多載中的宣告為下
傳回型別 operator運算子符號(.....)
然而看到比如要多載++前置或者是右移運算子>>時
宣告會變成
傳回型別& operator運算子符號(.....)
個人不太能理解這個&的意義,翻來翻去也沒有找到解答
作者: uranusjr (←這人是超級笨蛋)   2018-06-17 18:46:00
因為它必須要能夠回傳被作用的物件本身a.prefix_inc() 的回傳值必須要能夠是 a 本身你可以想想看上面要怎麼實作, 就知道沒有參考做不出來
作者: jerryh001   2018-06-17 19:16:00
reference type 而比較不精確的說法是回傳物件本體
作者: sarafciel (Cattuz)   2018-06-17 19:33:00
拿最單純的int來說 i+1是右值,++i是左值而左值必須要有明確的記憶體位址 右值不用所以你看到的一般運算符是回傳純value而prefix++這種就必須帶reference 他才會帶記憶體位置要寫回傳純value的++也可以 只是這樣就跟大多數人理解的prefix++有落差這樣至於>>這個東西雖然C原生是回右值的 不過C++又把>>拉去做iostream的運算符 你看到的>>重載我猜應該是拿來接iostream用的

Links booklink

Contact Us: admin [ a t ] ucptt.com