2014-10-11 2 views
1

Я перегрузил оператор + Integer operator+(Integer & a, Integer & b). Но когда я делаю a = b + c + d, он выдает ошибку недействительных операндов в двоичное выражение. Но добавив const к параметрам, больше никаких ошибок. Почему это происходит?Почему добавление «const» разрешает «недопустимые операнды для двоичного выражения»

ответ

7

b + c + d создает временный результат b + c. Ссылка на это временное сообщение затем передается во второй вызов operator+().

Только const ссылки могут быть привязаны к временным.

Дальнейшие обсуждения см. How come a non-const reference cannot bind to a temporary object?

Смежные вопросы