在C / C++中命名“左值”和“右值”的背后是什么原因(我知道它们的功能)?
最佳答案
该标准提到了这一点:
也就是说,左值是可以分配的值,而右值是可以分配的值。
但是,这已逐渐远离事实。您无法分配的左值的一个简单示例是const
变量。
const int x = 5;
x = 6; // Error
当涉及运算符重载时,甚至可以在分配的左侧显示一个右值。我发现将左值引用为存储在内存中的对象,将右值引用为一个值(可能已从内存中读取)更有用。这些概念很好地反射(reflect)了这个想法。一些例子:
&
)需要一个左值,因为您只能在内存中获取某个地址。它不需要获取对象的值即可计算出其地址。 std::move
将左值表达式转换为右值表达式可以被认为是欺骗编译器,使其认为存储在内存中的对象实际上只是一个临时值。 但是,这并非在所有情况下都成立。这只是一个合理的类比。
关于c++ - “lvalue”和 “rvalue”命名背后的原因是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15765893/