假设我们用 C++ 编写以下代码:a=b=5;
这基本上意味着 a=(b=5);
如果我们有 a=5;
我知道 5 是一个文字,因此它是一个 R 值。 a
是一个 L 值。同样适用于 b=5;
我现在想知道,如果我们分别编写 a=b=5;
a=(b=5);
我现在可以说以下吗?
对于 a
,b=5
是一个 R 值,a
是一个 L 值。此外,b
是一个 L 值,5
是一个 R 值。
a
的 R 值是多少?
最佳答案
这取决于。内置的 operator=
返回赋值左侧的左值引用。所以,如果 a
和 b
是 int
,那么 (b = 5)
是一个左值表达式,你将该左值分配给 a
,其中 a
和 b
都是左值,5
是纯右值。
这对于重载的 operator=
通常也是相同的,因为大多数人返回一个左值引用,但它不一定是。
如果您想将左值转换为右值,那么您可以使用 std::move
.
关于c++ - R 和 L 值是否与其上下文有关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46450142/