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=将返回左值的左值引用。所以,如果abint的那么(b = 5)是一个左值表达式,你是左值分配给a,与ab均为左值和5是一个prvalue。

对于超载operator=,这通常也是一样的,因为大多数人返回一个左值引用,但它不一定是。

如果你想将一个左值赋给右值,那么你使用std::move