为什么添加"const"解决"无效的操作数到二进制表达式"

Bru*_* Su 1 c++ overloading constants

我已经超载了运营商+ Integer operator+(Integer & a, Integer & b).但是当我执行a = b + c + d时,它会将无效操作数的错误提供给二进制表达式.但是通过添加const参数,不会再出现错误.为什么会这样?

NPE*_*NPE 7

b + c + d生成临时结果b + c.然后将对该临时的引用传递给第二次调用operator+().

只有const引用可以绑定到临时对象.

有关进一步的讨论,请参阅非const引用如何无法绑定到临时对象?