赋值表达式的左值和右值
名称 | 含义 |
---|---|
左值 | 一般出现在赋值表达式的左边,但也可以出现在赋值表达式的右边。其特点是有变量名即可通过地址访问并修改的内存块 |
右值 | 只能出现在赋值表达式的右边,特点是没有名字,即没有可访问的地址名,只有一个值,不可修改 |
常规函数返回值是右值
引用返回类型是左值
如果对引用返回类型前加const限定符,则其由左值变成右值
标准C++语言中,临时量(术语为右值,因其出现在赋值表达式的右边)可以被传给函数,但只能被接受为const &类型。而非&(引用)类型。所以参数为右值时面对只能是引用的函数原型,会报错。
左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。一个区分左值与右值的便捷方法是:看能不能对表达式取地址,如果能,则为左值,否则为右值。
class list
{
.....
bool push_back(char e)
// bool push_back(char & e) 若是此句则下面语句会出现错误
// bool push_back(const char & e) 此句可以运行!!
......
};
list a;
a.push_back('a') // 传入的是右值,采用按值传递则正确,按引用传递则错误,右值没有引用,但是有 const & (限定引用)!!
赋值表达式的左值和右值相关推荐
- c 表达式必须是可修改的左值_C++中的左值,右值,左值引用,右值引用
童帅 2020-2-22 文中的"表达式"都是指赋值表达式 左值,右值,左值引用,右值引用 到底是什么 左值和右值 int a = 10; int b = 5; int c = a ...
- C/C++左值性精髓(二)哪些表达式是左值,哪些是右值?----右值表达式
2019独角兽企业重金招聘Python工程师标准>>> C对于右值的定义是表达式的值,C中所有完整表达式的结果都是右值.所谓完整表达式(full expression),指的是这样的 ...
- C++/C++11中左值、左值引用、右值、右值引用的使用
C++的表达式要不然是右值(rvalue),要不然就是左值(lvalue).这两个名词是从C语言继承过来的,原本是为了帮助记忆:左值可以位于赋值语句的左侧,右值则不能. 在C++语言中,二者的区别就没 ...
- 【 C 】对左值与右值的一些个人思考
今天重温C语言的指针,看的书是<C和指针>,关于左值和右值以及指针表达式的内容看得甚是迷惑与煎熬,怎么会这么难理解,指针表达式又是作为左值又一会作为右值,而且二者有着不一样的含义,为什么当 ...
- c/c++左值和右值
C/C++中的变量有左值和右值之分,他们的区别主要如下: (1)左值可以放在赋值号 = 的左右两边,右值只能放在赋值号 = 的右边 (2)在C语言中,有名字的变量即为左值:而函数的运行结果或表达式中间 ...
- 39.左值、左值引用、右值、右值引用
1.左值和右值的概念 左值是可以放在赋值号左边可以被赋值的值:左值必须要在内存中有实体: 右值当在赋值号右边取出值赋给其他变量的值:右值可以在内存也可以在CPU寄存器. ...
- 2020-10-27(左值和右值)
什么是表达式: 表达式由一个或多个操作数通过操作符组合而成.最简单的表达式仅包含一个字面值常量.较复杂的表达式则由操作符以及一个或者多个操作数构成. 一个变量是表达式但是一个表达式就不一定是变量了. ...
- c语言 变量的左值和右值,C++雾中风景10:聊聊左值,纯右值与将亡值
C++11的版本在类型系统上下了很大的功夫,添加了诸如auto,decltype,move等新的关键词来简化代码的编写与降低阅读代码的难度.为了更好的理解这些新的语义,笔者确定通过几篇文章来简单窥探一 ...
- 左值、右值、左值引用、右值引用
1. 左值 左值(lvalue,left value),顾名思义就是赋值符号左边的值,可以取地址.准确来说,左值是表达式(不一定是赋值表达式)后依然存在的持久对象. 可以将左值看作是一个关联了名称的内 ...
最新文章
- π是无理数证明定积分_证明圆周率是无理数很容易?人类花了2000年!
- linux的编程命令,linux编程常用命令
- SpringMVC 参数解析器
- vb 绘制图形/蝴蝶动画
- java tika pdf转图片_使用tika将pdf转为html
- 【闲聊产品】之七:投票真的有用么?
- A. Red and Blue Beans
- css实现背景颜色透明,文字不透明
- 企业级网络建站工作室源码
- java复杂的代码做程序_摆脱复杂烧脑的程序代码,利用快速开发平台轻轻松松做软件...
- 交叉编译mpg321到MX27 ADS Rel3平台
- xss漏洞工具 -- xsser
- Android安全 Hook技术,Android下通过hook技术实现透明加解密保障数据安全
- mysql 迁移 myd_mysql文件*.opt *.frm *.MYI *.MYD的迁移
- Java进阶-requestresponse (十一)
- Dither(抖动): Bayer Matrix(Bayer ordered dither matrix)与Bayer Filter(拜尔滤镜)
- 【计算机视觉40例】案例28:表情识别
- 极值点、驻点、拐点、关系点
- windows域名解析服务器地址,Win10打开提示无法解析服务器DNS如何解决
- Windows7使用inter7代cpu更新补丁问题