c++重載運算符 C 賦值運算符重載,為什么要返回引用?
C 賦值運算符重載,為什么要返回引用?由于賦值操作會更改左值,而這樣的運算符不會更改操作數,因此賦值運算符重載會返回一個表達式(a=b)=C)的引用,該表達式會再次寫入a=b。歸還臨時物品是合理的。
C 賦值運算符重載,為什么要返回引用?
由于賦值操作會更改左值,而這樣的運算符不會更改操作數,因此賦值運算符重載會返回一個表達式(a=b)=C)的引用,該表達式會再次寫入a=b。歸還臨時物品是合理的。如果返回引用,在大多數情況下不會出錯或導致某些操作數意外修改。然而,這使得表達式(a,b)=C出現,這與約定有點不一致。當然,也可以返回常量引用。
C 中如何重載運算符"="用于復數的賦值?
=重載必須是成員函數,因此它應該比正常使用的函數少一個參數。而且,復數賦值后的返回值也應該是一個復雜對象,因此應該改為:Point&;operator=(constpoint&;AMPB){。。。//assign the real part and virtual part to return*this}返回類型僅供參考,以提高效率
我很久沒有寫C了。我給你這個主意。它可以用作左值,所以我們需要以return的形式返回引用*這個Friend函數沒有這個指針,對嗎?賦值運算符返回必須引用的類型,這是鍵
!因此,RT
1。因為它是運算符重載,所以它必須訪問類的私有成員變量。根據類的封裝要求,除了friend函數外,其他任何外部操作都是非法的,因此普通函數不能用來重載操作符。
2. 如果賦值運算符的重載函數沒有顯式定義,編譯器將自動生成它。即使類成員變量包含指針,指針值也會被復制。因此,往往造成多個實例共享一個存儲空間的尷尬局面。分解第一個定義的類時,剩余的實例仍然指向釋放的存儲空間,指針的值將從類中刪除,但是成員變量的值已被破壞,實例仍然存在不可接受的現實。
3. 賦值函數是構造函數的重載,而不是普通成員函數,不能由對象調用。函數只需要一個相同類型的參數,以常量和引用的形式出現。友元函數的參數與重載運算符的個數一致,如,-、*、/等都需要兩個參數。這些概念類似于數學概念。賦值運算符=不是數學概念中的運算符。因此,運算符重載的友元函數的參數不小于2(這些運算符是數學概念中的運算符)。