1
我已經Integer operator+(Integer & a, Integer & b)
重載運營商+。但是當我做a = b + c + d時,它給無效操作數的錯誤給二進制表達式。但是通過將const
添加到參數中,沒有更多的錯誤。爲什麼會發生?爲什麼加入「常量」解決「無效操作數的二進制表示」
我已經Integer operator+(Integer & a, Integer & b)
重載運營商+。但是當我做a = b + c + d時,它給無效操作數的錯誤給二進制表達式。但是通過將const
添加到參數中,沒有更多的錯誤。爲什麼會發生?爲什麼加入「常量」解決「無效操作數的二進制表示」
b + c + d
生成b + c
的結果的臨時值。然後將對該臨時的引用傳遞給第二次調用operator+
()。
只有const
引用可以綁定到臨時對象。
有關進一步討論,請參見How come a non-const reference cannot bind to a temporary object?