码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 右值左值

时间:2018-11-29 11:07:36      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:不能   知乎   val   ali   没那么简单   margin   常量   地址   总结   

左值右值

名词

左值:lvalue,left value

右值:rvalue,right value

C语言

这两个名词是从C语言继承过来的,C语言中为了帮助记忆:左值可以出现在赋值语句的左侧,右值则不能。

C++

  • 在C++语言中,二者的区别就没那么简单了。C++的表达式要不然就是左值,要不然就是右值,不存在黑户。

  • 一个左值表达式的求值结果是一个对象或者一个函数,然而以常量对象为代表的某些左值实际上不能作为赋值语句的左侧运算对象。此外,虽然某些表达式的求值结果是对象,但它们是右值而非左值。

  • 可以做一个简单的归纳:当一个对象被用作右值的时候,用的是对象的值(内容),当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。

  •  知乎看到的经典总结:左值右值的形式区分(或者称语法区分)是能否用取地址&运算符;语义区分(即其本质涵义)在于表达式代表的是持久对象还是临时对象。

 

c++ 右值左值

标签:不能   知乎   val   ali   没那么简单   margin   常量   地址   总结   

原文地址:https://www.cnblogs.com/Yu-900914/p/10036070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!