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

左值引用与右值引用

1. RAII

运行时资源管理,离开作用域后对象自动调用析构函数。右值引用,可以将对象的生命周期延到作用范围之外

2. 左值和右值

参考:左值和右值_左值和右值的区别-CSDN博客

前置运算符,一般都属于左值:++i,--i,解引用(*p)。

后置运算符,右值,i--(先取i,再i + 1,再return); a & b,位运算符,也是右值。

将亡值:可以出发移动构造函数,移动拷贝构造函数。

3. 左值引用和右值引用

(1)左值的引用,另外,const 左值引用可以引用右值。

(2)通过std::move对左右值进行相互转换。

【C++基础】std::move用法介绍-CSDN博客

(3)左值引用,主要为了避免对象的拷贝构造。

(4)右值引用,资源管理(避免深拷贝);STL应用,比如vector的emplace_back,也是避免了深拷贝;智能指针,方便资源管理。

(5)完美转发

本质是函数模板里,对对象的值和属性进行透传。这里还涉及了引用折叠规则

C++概念:引用折叠、模板推导、通用引用 - imxiangzi - 博客园

参考:【【C++面试题】左值引用与右值引用的区别?右值引用的意义】 https://www.bilibili.com/video/BV1Kw4m1k7VC/?share_source=copy_web&vd_source=4429eec99a3a4922ca78501eb4607294

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Tauri 应用 input 输入自动大写问题定位解决
  • 华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 9 撤回通知扩展消息
  • 【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))
  • Paper 0 | Visual Instruction Tuning
  • sqli-lab靶场学习(四)——Less11-14(post方法)
  • Centos7 配置yum源详解
  • express的Router,配置 post 请求方法
  • linux-网络管理-网络配置
  • QEMU:模拟 ARM 大端字节序运行环境
  • 性能测试工具——JMeter
  • expressjs 和 Router 配置 POST 请求
  • Mac使用Nginx设置代理,并禁用自带Apache
  • mac安装JetBtains全家桶新版本时报错:Cannot start the IDE
  • 关于 ModuleNotFoundError: No module named ‘Crypto‘
  • AngularJS 模块
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 10个最佳ES6特性 ES7与ES8的特性
  • Android Volley源码解析
  • Asm.js的简单介绍
  • docker python 配置
  • JavaScript 奇技淫巧
  • JDK 6和JDK 7中的substring()方法
  • k8s如何管理Pod
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Redis 中的布隆过滤器
  • sessionStorage和localStorage
  • Spring Boot快速入门(一):Hello Spring Boot
  • 入门级的git使用指北
  • 使用common-codec进行md5加密
  • 手机端车牌号码键盘的vue组件
  • 微信开源mars源码分析1—上层samples分析
  • 小程序开发中的那些坑
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 在Unity中实现一个简单的消息管理器
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 阿里云ACE认证学习知识点梳理
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #laravel 通过手动安装依赖PHPExcel#
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (2)空速传感器
  • (3)(3.5) 遥测无线电区域条例
  • (C++17) optional的使用
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (十三)Flink SQL
  • (实战篇)如何缓存数据