犀牛书第六版P67页关于左值有这样一句描述:表达式只能出现在赋值运算符的左侧然后举出例子在javascript中,变量、对象属性和数组元素均是左值但是例子中的几个值均可以放在表达式右边于是去查百度,百度中关于左值的描述定义如下:左”(left)的原意是指可以放在赋值符号“=”的左边,但其实也表示能作为&和++等操作符的操作数在描述上的区别就是左值是可以在表达式左边还是只能在表达式左边呢?希望其他非前端开发人员也能给出关于这个概念的见解,不胜感激
4 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
int a;
举几个例子吧
a = 5; //把(int)5存入a所具有的地址
int *pa = &a;//取a地址
-
int& foo(int &a) {...return a;} //一个返回引用的函数
int *pa2 = &foo(a); //取返回对象(a)的地址
以上代码都以变量a
举例。
当一个对象被用作右值时,用的是其中的值(内容);
当一个对象被用作左值时,用的是它的地址(身份)。
(可以说左值对象都拥有其所支配的一片内存)
ps.想要深入了解可以去看看C++11
的右值引用和std::move()
添加回答
举报
0/150
提交
取消