【可乐教育】C++左值(引用)和右值(引用)(可乐老师编程)

【可乐教育】C++左值(引用)和右值(引用)(可乐老师编程)
  • 写C++代码编译时,有时会出现左值问题错误或右值错误,那左值和右值究竟是什么呢???

一、左值与右值

  • 啥是左值和右值呢?

左值:在内存有确定存储地址、有变量名,表达式结束依然存在的值,简单来说左值就是非临时对象。

右值:就是在内存没有确定存储地址、没有变量名,表达式结束就会销毁的值,简单来说右值就是临时对象。

二、左值引用于右值引用

  • 知道了左值与右值了,那啥是左值引用与右值引用呢?左值引用:其实就是绑定到左值的引用,通过&来获得左值引用。
  • 总结归纳:非常量左值引用只能绑定到非常量左值上;常量左值引用可以绑定到非常量左值、常量左值、非常量右值、常量右值等所有的值类型。
  • 右值引用:其实也是绑定到右值的引用,通过&&来获得右值引用。
  • 总结归纳:非常量右值引用只能绑定到非常量右值上;常量右值引用可以绑定到非常量右值、常量右值上。

三、右值引用与左值引用的区别

  • 1、左值引用绑定到有确定存储空间以及变量名的对象上,表达式结束后对象依然存在;2、右值引用绑定到要求转换的表达式、字面常量、返回右值的表达式等临时对象上,赋值表达式结束后就对象就会被销毁。3、左值引用后可以利用别名修改左值对象;右值引用绑定的值不能修改。

四、引入右值引用的原因

  • 1、替代需要销毁对象的拷贝,提高效率:某些情况下,需要拷贝一个对象然后将其销毁,如:临时类对象的拷贝就要先将旧内存的资源拷贝到新内存,然后释放旧内存,引入右值引用后,就可以让新对象直接使用旧内存并且销毁原对象,这样就减少了内存和运算资源的使用,从而提高了运行效率;2、移动含有不能共享资源的类对象:像IO、unique_ptr这样的类包含不能被共享的资源(如:IO缓冲、指针),因此,这些类对象不能拷贝但可以移动。这种情况,需要先调用std::move将左值强制转换为右值,再进行右值引用。

特别声明:[【可乐教育】C++左值(引用)和右值(引用)(可乐老师编程)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

深圳设计周高校联盟启动!高校学者点赞深圳设计赋能“产学研”协同创新(深圳设计周2021)

在他眼中,深圳是一座蓬勃发展、开放包容的城市,创新氛围浓郁,在这里,设计与科技紧密融合,形成独有的产业特色。 关道文表示,设计院校既能识别新兴产业发展方向,也能助力成熟产业优化产品与服务体验——这种学界与产业…

深圳设计周高校联盟启动!高校学者点赞深圳设计赋能“产学研”协同创新(深圳设计周2021)

母亲瘫痪,父亲截肢,她长得漂亮演技好,终被圈外丈夫宠成宝(母亲瘫痪,父亲老是辱骂怎么办)

举个例子,扮演“辣子西施”时,她仅仅凭借一个眼神,就能把一个普通的卖麻辣烫老板娘角色演得栩栩如生,没有夸张的『妆容』和大声的喊叫,但她的眼神却让无数观众屏息凝视。在《娘道》里,她的段金花经历了许多波折,凭借深厚的…

母亲瘫痪,父亲截肢,她长得漂亮演技好,终被圈外丈夫宠成宝(母亲瘫痪,父亲老是辱骂怎么办)

虹口宝易埠珠宝全能!熊猫金币,黄金回收,奥运金条,专业团队精准估价

每一根奥运金条都有着独特的纪念意义,其设计融合了奥运元素和中国传统文化,是体育与艺术的完美结合。 上海宝易埠珠宝以其专业团队的精准估价和全方位服务,在珠宝行业树立了卓越的口碑。无论是熊猫金币的收藏投资、黄金回…

虹口宝易埠珠宝全能!熊猫金币,黄金回收,奥运金条,专业团队精准估价

UL认证加持,安全与精度并行——交流电流变送器的工业级解决方案(ul认证范围)

交流电流变送器是一种将交流电流信号转换为标准输出信号(如4-20mA、0-5V等)的装置,主要用于实时监测、控制和保护电流相关的系统。 BA系列产品应用电磁感应原理,对电网中的交流电流进行实时测量,采用精密…

UL认证加持,安全与精度并行——交流电流变送器的工业级解决方案(ul认证范围)

谁让舞剑老人进的幼儿园 安全隐患需重视(谁让舞剑老人进山洞)

11月3日,有网友反映,在江苏扬州邗江区保集半岛幼儿园内,早上8点多送孩子时发现不少老人正在幼儿园操场上练剑健身。当地相关部门证实情况属实,并表示正在协商解决

谁让舞剑老人进的幼儿园 安全隐患需重视(谁让舞剑老人进山洞)