犀牛书第六版P67页关于左值有这样一句描述:表达式只能出现在赋值运算符的左侧
然后举出例子在javascript中,变量、对象属性和数组元素均是左值
但是例子中的几个值均可以放在表达式右边
于是去查百度,百度中关于左值的描述定义如下:左”(left)的原意是指可以放在赋值符号“=”的左边,但其实也表示能作为&和++等操作符的操作数
在描述上的区别就是左值是可以在表达式左边还是只能在表达式左边呢?
希望其他非前端开发人员也能给出关于这个概念的见解,不胜感激
犀牛书第六版P67页关于左值有这样一句描述:表达式只能出现在赋值运算符的左侧
然后举出例子在javascript中,变量、对象属性和数组元素均是左值
但是例子中的几个值均可以放在表达式右边
于是去查百度,百度中关于左值的描述定义如下:左”(left)的原意是指可以放在赋值符号“=”的左边,但其实也表示能作为&和++等操作符的操作数
在描述上的区别就是左值是可以在表达式左边还是只能在表达式左边呢?
希望其他非前端开发人员也能给出关于这个概念的见解,不胜感激
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.6k 阅读✓ 已解决
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()