выражение — оператор присваивания в c ++ возвращает rvalue или lvalue?

Оператор присваивания в c ++ возвращает rvalue или lvalue? И если это lvalue, какой из двух аргументов будет увеличен здесь?

(a = b)++

5

Решение

Возвращает именующий. Согласно § 5.17:

Оператор присваивания (=) и все составные операторы присваивания
группа справа налево. Все требуют изменяемого lvalue как их слева
операнд и возвращает значение l, ссылаясь на левый операнд.

Если эти объекты имеют пользовательский оператор для присваивания, то это зависит от реализации и объявления (типа возврата) operator=,

Так нормально, после

(a = b)++

Предмет a будет увеличен.

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]