我已经使运算符+超载了Integer operator+(Integer & a, Integer & b)
。但是当我执行a = b + c + d时,它将无效操作数的错误赋予二进制表达式。但是通过添加const
参数,不再有错误。为什么会这样?
b + c + d
为的结果生成一个临时值b + c
。然后,对该临时变量的引用将传递到对operator+
()的第二次调用。
只有const
引用可以绑定到临时对象。
有关更多讨论,请参见非常量引用为什么不能绑定到临时对象?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句