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

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

一、左值与右值

  • 啥是左值和右值呢?

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

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

二、左值引用于右值引用

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

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

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

四、引入右值引用的原因

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

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

猜你喜欢

关于 Xperia Transfer Mobile 无法工作的解决方案(最新)(关于春节的古诗)

方法 1. 使用更好的替代方案目前,许多传输应用程序可以直接将数据从一部手机复制到另一部手机,例如Coolmuster AndroidAssistant ,这是一款支持多种文件类型的一站式传输程序。 结论…

关于 Xperia Transfer Mobile 无法工作的解决方案(最新)(关于春节的古诗)

高效应对PGP游戏下载障碍的策略

网络加速优化:UU加速器凭借自研黑科技和独家专利技术,智能优化数据传输路径,为下载提供稳定高速连接。解决下载问题仅是起点,要持续享受PGP的400余款游戏,UU加速器的动态多线功能在游戏中自动分配最佳节点,…

高效应对PGP游戏下载障碍的策略

工信部:加快无人机等技术开发和应用推广!无人机行业将迈向更规范、更有序的发展新阶段!(工信部关于加快5g建设的通知)

7月29日,工信部科技司在工信部网站上发文,公开征集4项强制性国家标准制修订计划项目的意见,其中包括《民用无人驾驶航空器感知与避让要求》(项目周期18个月)、《民用无人驾驶航空器飞行控制系统数据记录要求》(…

工信部:加快无人机等技术开发和应用推广!无人机行业将迈向更规范、更有序的发展新阶段!(工信部关于加快5g建设的通知)

上海格思申请航天器热管打磨喷涂一体装置专利,多个航天器热管可在一次安装后实现打磨喷涂(上海格思教育培训有限公司)

金融界2025年8月1日消息,国家知识产权局信息显示,上海格思信息技术有限公司申请一项名为“一种航天器热管打磨喷涂一体装置”的专利,公开号CN120395582A,申请日期为2025年04月。 专利摘要显示,…

上海格思申请航天器热管打磨喷涂一体装置专利,多个航天器热管可在一次安装后实现打磨喷涂(上海格思教育培训有限公司)

世锦赛女子50米蛙泳预赛唐钱婷第三 顺利晋级半决赛(世锦赛女子50米短池自由泳A标?)

北京时间8月2日,2025年世界泳联世锦赛游泳项目继续进行。在女子50米蛙泳预赛中,中国选手唐钱婷和杨畅携手出战。最终,唐钱婷排名预赛第三,杨畅排名第九,两人均晋级半决赛。唐钱婷是本届游泳世锦赛女子蛙泳的热门选手

世锦赛女子50米蛙泳预赛唐钱婷第三 顺利晋级半决赛(世锦赛女子50米短池自由泳A标?)