是 c++ 中的赋值运算符返回右值或左值

Is assignment operator in c++ returns rvalue or lvalue?

本文关键字:返回 赋值运算符 c++      更新时间:2023-10-16

c++ 中的赋值运算符是否返回右值或左值?如果它是左值,那么这两个参数中的哪一个将在这里增加?

(a = b)++

它返回一个左值。根据§ 5.17:

赋值运算符 (=( 和复合赋值运算符全部 从右到左分组。都需要一个可修改的左值作为他们的左边 操作数并返回一个引用左操作数的左值。

如果这些对象具有用于赋值的用户定义运算符,则它取决于operator=的实现和声明(返回类型(。

所以通常,之后

(a = b)++

对象a将递增。