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

时间:2014-10-11 10:16:26

标签: c++ constants overloading

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

1 个答案:

答案 0 :(得分:7)

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

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

有关进一步的讨论,请参阅How come a non-const reference cannot bind to a temporary object?