左值和右值一直是 c++ 中两个很常见但是挺难解释的概念,今天想巩固总结下,希望能更好地掌握他们。

# 1. 简单理解

最简单地理解方式,就是赋值操作符左边的是左值,右边的是右值。例如下面的表达式中:

int x = 5;

x 就是左值,5 就是右值。

再用抽象、通用一点的说法的话,左值代表了一个 c++ 内存中的对象,即左值是有地址的,可以使用取值符;而右值与之相反,右值是一个表达式,它无法对应一个内存中的值。

# 2. 官方概念

官方为了定义左值和右值解释了很多,甚至引入了 glvalue(“generalized” lvalue)、prvalue(“pure” rvalue)、xvalue(an “eXpiring” value)3 个类型来解释,感觉只是几个帮助理解的概念,不需要 (¦3」∠)_。

所以这里就整理了下官方给出的例子,用来以后查阅:。

左值:

lvalue

右值(prvalue+xvalue):

prvalue

xvalue

# 3. 总结

左值右值也许我们在编程过程中很少需要关注,但理解一下这几个术语对看文档还是挺有帮助的~

# 参考资料

  • Value categories - cppreference.com
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Nirvana 支付宝

支付宝