我已经用Integer operator+(Integer & a, Integer & b)
重载了运算符+。但当我执行a=b+c+d时,它会将无效操作数的错误提供给二进制表达式。但通过将const
添加到参数中,就不会出现更多错误。为什么会发生这种情况?
b + c + d
为b + c
的结果生成一个临时值。然后将对该临时的引用传递给对operator+
的第二调用()。
只有const
引用可以绑定到临时库。
有关进一步的讨论,请参阅为什么非常量引用不能绑定到临时对象?