对左值(lvalue)和右值(rvalue)的两种理解方式

Posted purelaw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对左值(lvalue)和右值(rvalue)的两种理解方式相关的知识,希望对你有一定的参考价值。

在《C++ Primer 中文版(第五版)》(电子工业出版社)中的说法有:

  • 当一个对象被用作右值的时候,用的是对象的值(内容);当对对象被用作左值的时候,用的是对象的身份(在内存中的位置)。

而我在再次学习计算机原理中的“代码区、常量区、全局(静态)区、堆区、栈区”后想到的一个新理解是:

  • 右值是不可控的,左值是可控的。

    右值,要么在程序一开始运行以后就已经确定了,要么是程序运行到一定程度,系统就会确定的值,在值生成以后无法再次改变这个内容(当然也包括临时值);而左值可以随意改变。

以上是关于对左值(lvalue)和右值(rvalue)的两种理解方式的主要内容,如果未能解决你的问题,请参考以下文章

左值的详解

如何评价 C++11 的右值引用(Rvalue reference)特性?

C++11:左值右值左值引用右值引用

C++11:左值右值左值引用右值引用

C++11:左值右值左值引用右值引用有什么区别?

C++,在函数中采用 const lvalue 和 rvalue 引用