当前位置: 首页 > news >正文

【C++篇】C++11:右值引用与移动语义

  • 左值:可以获取它的地址+可以对它赋值(修改)定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。 左值既可以出现在=的左边,也可以出现在右边
  • 右值:右值不能取地址,也不能赋值(修改) 右值可以出现在=的右边,但是不能出现出现在赋值符号的左边

代码语言:javascript

AI代码解释

int fmin(int a, int b) { return a < b ? a : b; } int main() { // 以下都是左值 int* p = new int(0); int b = 1; const int c = 2; "xxxxx";//注意常量字符串也是左值,因为它可以被取地址, const char* p = "xxxxx"; p[2];//字符串字面值具有数组类型,是左值(尽管它是不可修改的左值)。 // 以下几个都是常见的右值 10; x + y; fmin(x, y);//函数的返回值是右值 // 这里编译会报错:error C2106: “=”: 左操作数必须为左值 10 = 1; x + y = 1; fmin(x, y) = 1; return 0; }

什么是左值引用?什么是右值引用?

传统的C++语法中就有引用的语法,而C++11中新增了的右值引用语法特性,所以从现在开始我们之前学习的引用就叫做左值引用。无论左值引用还是右值引用,都是给对象取别名。

  • 对左值的引用就是左值引用,给左值取别名,定义方式:type&
  • 右值引用就是对右值的引用,给右值取别名,定义方式:type&&

代码语言:javascript

AI代码解释

int main() { // 以下的p、b、c、*p都是左值 int* p = new int(0); int b = 1; const int c = 2; // 以下几个是对上面左值的左值引用 int*& rp = p; int& rb = b; const int& rc = c; int& pvalue = *p; double x = 1.1, y = 2.2; // 以下几个都是常见的右值 10; x + y; fmin(x, y); // 以下几个都是对右值的右值引用 int&& rr1 = 10; double&& rr2 = x + y; double&& rr3 = fmin(x, y); return 0; }

需要注意的是:右值是不能取地址的,但给右值取别名后,会导致右值被存储到特定的位置,且可以取到该位置的地址,并且还可以去修改它,如果不想让被引用的右值被修改,可以用const修饰右值引用。

代码语言:javascript

AI代码解释

int main() { double x = 1.1, y = 2.2; int&& rr1 = 10; const double&& rr2 = x + y; rr1 = 20; rr2 = 5.5; //报错 return 0; }

左值引用与右值引用比较

左值引用可以引用右值吗?1. 左值引用只能引用左值,不能引用右值,因为右值是不能被修改的,而左值引用是可以修改,避免权限放大。2. 但是const左值引用既可以引用左值,也可以引用右值。


http://www.jsqmd.com/news/469908/

相关文章:

  • 【C++篇】哈希扩展:位图和布隆过滤器+哈希切割
  • 2026年破碎机公司口碑榜:五大热门服务商深度解析 - 2026年企业推荐榜
  • 排队节省40分钟!金仓数据库守护湘江新区百万居民就医路
  • 网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
  • 若依微服务中配置 MySQL + DM 多数据源
  • 解决MySQL8.0报错Client does not support authentication protocol requested by server...问题
  • 2026年烟囱塔优质产品推荐榜:监控铁塔/瞭望监控塔/碳钢烟囱塔/角钢监控塔/道路监控塔/钢管监控塔/镀锌监控塔架/选择指南 - 优质品牌商家
  • 2026优秀可靠门窗品牌推荐:四川门窗品牌/性价比门窗/成都门窗/推拉窗/推拉门/系统门窗/节能门窗/铝合金门窗/选择指南 - 优质品牌商家
  • 2026年评价高的超低温试验箱厂家推荐:高精度-70℃~-180℃超低温试验箱源头厂家推荐 - 品牌宣传支持者
  • 这个 PUA Skill 火了:用阿里/字节的绩效话术逼 Claude 不敢放弃,一言不合打 3.25
  • 解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
  • 2026模块化移动售楼处优质服务商推荐榜:临时售楼处、临时样板间、创意集装箱售楼处、可定制的售楼处、可拆卸售楼处选择指南 - 优质品牌商家
  • 2026年初至今,吉林地区值得信赖的路边石供应商精选 - 2026年企业推荐榜
  • 工业运动控制可靠伦茨伺服品牌推荐指南:科尔摩根电机、科尔摩根直线电机、科尔摩根维修、科尔摩根驱动器、伦茨PLC选择指南 - 优质品牌商家
  • 第二章 Spring中的Bean
  • 聚焦3c电子精密抓取需求,精选2026年高可靠3c电子电爪品牌 - 品牌2026
  • 机器人灵巧手技术与应用场景:助力挑选专业灵巧手品牌 - 品牌2026
  • 为什么RTL总是姗姗来迟?
  • 2026年个性化定制防盗盖供应商推荐指南:试管瓶、进样瓶、避光瓶、酒瓶盖、铝塑盖、铝盖、食品级玻璃瓶、儿童安全盖选择指南 - 优质品牌商家
  • 解决JDK25,IDEA控制台中文乱码问题
  • 如何在 Golang 项目中高效运用 Protocol Buffers
  • 2026可靠直流充电桩优质产品推荐榜:电动汽车充电桩、重卡充电桩、高功率充电桩、3C国标充电桩、V2G充电桩、快充充电桩选择指南 - 优质品牌商家
  • 2026年出国劳务优质服务推荐榜正规资质权益保障:出国劳务哪里工资高、劳务输出公司出国务工、劳务输出出国务工、正规出国务工机构选择指南 - 优质品牌商家
  • 2026政企办公优质会议电子门牌推荐榜:人员去向电子牌、塑胶电子门牌、学校兑换柜、学生积分兑换柜、安全积分兑换柜选择指南 - 优质品牌商家
  • NGA-BBS-Script:论坛界面优化与浏览效率提升工具——如何通过轻量级配置实现信息获取效率翻倍?
  • 电爪核心技术与选型要点——助力高效优质电爪品牌推荐 - 品牌2026
  • 全面了解电爪厂商实力与产品特点,精准对接靠谱电爪生产厂家 - 品牌2026
  • FireRedASR-AED-L在VMware虚拟机中的部署与测试
  • 2026年音圈线性执行器品牌推荐,详解原理与优势 - 品牌2026
  • GoldHEN_Cheat_Manager:重新定义PS4游戏体验的终极优化工具