R&L值是否与其上下文相关?
问题描述:
所以假设我们用C以下++:a=b=5;
这基本上意味着a=(b=5);
R&L值是否与其上下文相关?
如果我们有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
是一个prvalue。
对于超载operator=
,这通常也是一样的,因为大多数人返回一个左值引用,但它不一定是。
如果你想将一个左值赋给右值,那么你使用std::move
。