C++笔记之左值与右值、右值引用
C++笔记之左值与右值、右值引用
code review!
文章目录
- C++笔记之左值与右值、右值引用
- 1.左值与右值
- 2.右值引用——关于int&& r = 10;
- 3.右值引用——对比int&& r = 10;和int& r = 10;
- 4.右值引用(rvalue reference)的概念
1.左值与右值

2.右值引用——关于int&& r = 10;
当声明 int&& r = 10; 时,发生了以下操作:
1. int&& r: 这是一个声明语句,它创建了一个名为 r 的变量,其类型是一个右值引用。int&& 表示这是一个指向 int 类型的右值引用。
2. = 10: 这是一个赋值操作,将右边的表达式的值分配给左边的变量。
因此,int&& r = 10; 声明了一个名为 r 的变量,它是一个右值引用,然后将整数值 10 赋值给了这个变量。
现在让我们来详细解释这个代码:
1. int&& r: 这部分声明了一个名为 r 的变量,它是一个右值引用。右值引用允许 r 绑定到一个右值(临时值)。在这里,r 是一个指向 int 类型的右值引用。
2. = 10: 这部分将右边的表达式的值分配给左边的变量 r。右边的表达式是 10,它是一个字面量整数,因此是一个右值。
综合起来,int&& r = 10; 表示将整数值 10 绑定到一个右值引用 r。因为 10 是一个右值,而 r 是一个右值引用,所以这个赋值是有效的。
这样的声明和赋值操作实际上是在C++中利用右值引用的一个典型用例。“右值引用允许您在不复制数据的情况下绑定到临时值,这对于实现移动语义和高效资源管理非常有用”。在这个例子中,r 是一个指向右值 10 的引用,因此您可以在代码中使用 r,就像您在使用常规引用一样。
3.右值引用——对比int&& r = 10;和int& r = 10;
让我们对比一下上述两行代码,分别使用右值引用和常规引用来初始化变量:
1. int&& r = 10;
这行代码声明了一个名为 r 的变量,它是一个右值引用。10 是一个右值,因为它是一个字面量,没有具名的内存位置。r 是一个指向 int 类型的右值引用,因此它可以绑定到右值。这里我们创建了一个右值引用 r 并将其绑定到右值 10。
2. int& r = 10;
这行代码声明了一个名为 r 的变量,它是一个常规引用。10 是一个右值,但是在这里,它被绑定到一个常规引用 r,这在语法上是合法的。然而,这样的代码是危险的,因为右值引用(包括常规引用)通常用于捕获左值(即具名的内存位置),以便可以使用它们。将右值直接绑定到常规引用可能导致悬空引用,因为 10 是一个临时值,一旦表达式结束,它将不再存在。
在实际使用中,常规引用应该用于捕获左值,以便能够延长对象的生命周期。右值引用通常用于实现移动语义和完美转发等高级特性。
总结:
- int&& r = 10; 将右值 10 绑定到一个右值引用 r,在合适的上下文中可以用于实现移动语义和完美转发。
- int& r = 10; 将右值 10 绑定到一个常规引用 r,这在语法上是合法的,但可能导致悬空引用。通常情况下,常规引用应该用于捕获左值。
4.右值引用(rvalue reference)的概念

相关文章:
C++笔记之左值与右值、右值引用
C笔记之左值与右值、右值引用 code review! 文章目录 C笔记之左值与右值、右值引用1.左值与右值2.右值引用——关于int&& r 10;3.右值引用——对比int&& r 10;和int& r 10;4.右值引用(rvalue reference)的概念 1.左值与右值 2.…...
JS逆向-某招聘平台token
前言 本文是该专栏的第56篇,后面会持续分享python爬虫干货知识,记得关注。 通常情况下,JS调试相对方便,只需要chrome或者一些抓包工具,扩展插件,就可以顺利完成逆向分析。目前加密参数的常用逆向方式大致可分为以下几种,一种是根据源码的生成逻辑还原加密代码,一种是补…...
LLMs高效的多 GPU 计算策略Efficient multi-GPU compute strategies
很有可能在某个时候,您需要将模型训练工作扩展到超过一个GPU。在上一个视频中,我强调了当您的模型变得太大而无法适应单个GPU时,您需要使用多GPU计算策略。但即使您的模型确实适合单个GPU,使用多个GPU加速训练也有好处。即使您正在…...
jvm-类加载子系统
1.内存结构概述 类加载子系统负责从文件系统或网络中加载class文件,class文件在文件开头有特定的文件标识 ClassLoader只负责class文件的加载,至于它是否运行,则由Execution Engine决定 加载的类信息存放于一块称为方法区的内存空间ÿ…...
【实例分割】(一)Mask R-CNN详细介绍带python代码
目录 1.🍀🍀实例分割定义 2.🍀🍀Mask R-CNN 3.🍀🍀经典的实例分割算法 4.🍀🍀Mask R-CNN python代码 整理不易,欢迎一键三连!!!…...
面试官问我Redis怎么测,我一脸懵逼!
有些测试朋友来问我,redis要怎么测试?首先我们需要知道,redis是什么?它能做什么? redis是一个key-value类型的高速存储数据库。 redis常被用做:缓存、队列、发布订阅等。 所以,“redis要怎么测试…...
【Spring Boot】四种核心类的依赖关系:实体类、数据处理类、业务处理类、控制器类
//1.配置项目环境,创建Spring Boot项目。 //2.数据库设置,配置数据库。 //3.创建实体类,映射到数据库。 //4.创建数据处理层类,Repository //5.创建业务处理类,Service类 //6.创建控制器类,Controller类 Ar…...
opencv 进阶15-检测DoG特征并提取SIFT描述符cv2.SIFT_create()
前面我们已经了解了Harris函数来进行角点检测,因为角点的特性,这些角点在图像旋转的时候也可以被检测到。但是,如果我们放大或缩小图像时,就可能会丢失图像的某些部分,甚至有可能增加角点的质量。这种损失的现象需要一…...
ES5 的构造函数和 ES6 的类有什么区别
文章目录 语法不同方法定义方式不同继承方式不同类内部的this指向不同静态成员定义方式不同访问器属性类的类型检查 在JavaScript中,类和构造函数都被用来创建对象,接下来会从以下几点说说两者的区别: 语法不同 构造函数使用函数来定义类使用…...
AUTOSAR配置与实践(配置篇) 如何条件控制PDU外发
AUTOSAR配置与实践(配置篇)如何条件控制PDU外发 一、需求1.1 需求简要分析1.2 需求进一步分析二、流程实现和具体配置一、需求 需要针对特定的PDU(外发)进行条件控制,这里要通过不同配置字进行PDU是否外发的控制 1.1 需求简要分析 正常PDU分组时分为两组,接收报文组和…...
2023年湖北中级工程师职称申报专业有哪些?甘建二告诉你
中级职称职称申报专业:环境工程、 土木建筑、土建结构、土建监理、土木工程、岩石工程、岩土、土岩方、风景园林、园艺、园林、园林建筑、园林工程、园林绿化、古建筑园林、工民建、工民建安装、建筑、建筑管理、建筑工程、建筑工程管理、建筑施工、建筑设计、建筑装…...
记录:ubuntu20.04+ORB_SLAM2_with_pointcloud_map+ROS noetic
由于相机实时在线运行需要ROS,但Ubuntu22.04只支持ROS2,于是重装Ubuntu20.04。上一篇文章跑通的是官方版本的ORB_SLAM2,不支持点云显示。高翔修改版本支持RGB-D相机的点云显示功能。 高翔修改版本ORB_SLAM2:https://github.com/ga…...
文心问数Sugar Bot :大模型+BI,多轮会话自动生成可视化图表与数据结论
Sugar BI 的文心问数功能是基于大语言模型实现的,支持您使用自然语言,通过多轮会话的方式,获取实时数据的图表展现,也可以自动为您总结与图表相关的业务结论。 文心问数功能邀测中,欢迎CSDN的用户前来报名:…...
21、WEB漏洞-文件上传之后端黑白名单绕过
目录 前言验证/绕过 前言 关于文件上传的漏洞,目前在网上的常见验证是验证三个方面: 后缀名,文件类型,文件头,其中这个文件头是属于文件内容的一个验证 后缀名:黑名单,白名单 文件类型…...
windows的django项目部署到linux的docker上
编辑dockerfile文件,可以自行寻找相关教程 创建镜像 docker bulid -t imagename:tag .查看镜像 docker images 如果想自己先试一下,那就需要运行容器 docker run -it -d -p 8000:8000 --name volume_name imagename:tag 查看容器 docker ps -a 进…...
【力扣】70. 爬楼梯 <动态规划>
【力扣】70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. …...
数据结构(3)
线性表是多个具有相同特征的数据的有限序列。 前驱元素:A在B前面,称A为B的前驱元素。 后继元素:B在A后面,称B为A的后继元素。 线性表特征: 1.一个元素没有前驱元素,就是头结点; 2.最后一个…...
深入浅出Pytorch函数——torch.nn.init.xavier_uniform_
分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…...
优橙内推安徽专场——5G网络优化(中高级)工程师
可加入就业QQ群:801549240 联系老师内推简历投递邮箱:hrictyc.com 内推公司1:浙江省邮电工程建设有限公司 内推公司2:北京宜通华瑞科技有限公司 内推公司3:浙江明讯网络技术有限公司 浙江省邮电工程建设有限公司 …...
2023年计算机设计大赛国三 数据可视化 (源码可分享)
2023年暑假参加了全国大学生计算机设计大赛,并获得了国家三等奖(国赛答辩出了点小插曲)。在此分享和记录本次比赛的经验。 目录 一、作品简介二、作品效果图三、设计思路四、项目特色 一、作品简介 本项目实现对农产品近期发展、电商销售、灾…...
破局B站音频提取难题:BilibiliDown革新性解决方案全解析
破局B站音频提取难题:BilibiliDown革新性解决方案全解析 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors…...
AI写论文不再难,4款AI论文生成工具带你开启高效写作之旅!
在2025年愈演愈烈的学术写作智能化趋势中,越来越多的人选择借助AI写论文工具。现实中许多这样的工具在撰写硕士、博士论文等长篇学术作品时,常常缺乏必要的理论深度,逻辑也显得比较松散。普通的AI论文写作工具显然无法满足这些专业写作的需求…...
大模型赋能多尺度空间智能:从具身感知到地球系统建模的跨学科探索
1. 大模型如何重构空间智能的认知框架 当AlphaGo击败人类棋手时,我们惊叹于AI的策略能力;但当大语言模型开始理解三维空间关系时,这标志着机器认知的质变。空间智能的本质是理解物体间的相对位置、距离和运动规律,这种能力对人类而…...
BilibiliDown:B站音视频资源管理的全场景解决方案
BilibiliDown:B站音视频资源管理的全场景解决方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bi…...
kali制作木马
黑客必备工具:Metasploit Framework(MSF)1. 生成木马程序: > msfvenom -p linux/x64/shell/reverse_tcp LHOST攻击机ip(Kali) LPORT9999 -f elf -o shell.elf2. 启动控制程序: > msfconsole > use exploit/mu…...
NaViL-9B图文问答教程:支持中英双语提问的跨语言理解能力实测
NaViL-9B图文问答教程:支持中英双语提问的跨语言理解能力实测 1. 认识NaViL-9B NaViL-9B是一款原生多模态大语言模型,由专业研究机构开发。它最吸引人的特点是能够同时理解文字和图片内容,并且支持中文和英文两种语言的提问。想象一下&…...
快速体验Qwen3-ASR-0.6B:上传音频秒出文字,支持52种语言
快速体验Qwen3-ASR-0.6B:上传音频秒出文字,支持52种语言 1. 模型简介 Qwen3-ASR-0.6B是阿里云通义千问团队推出的开源语音识别模型,专为高效准确的语音转文字任务设计。这个0.6B参数的轻量级模型在精度和效率之间取得了出色平衡,…...
魔兽世界插件开发完全指南:专业API文档与宏工具平台
魔兽世界插件开发完全指南:专业API文档与宏工具平台 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 魔兽世界插件开发是每位进阶玩家提升游戏体验的必经之路,…...
VMware Workstation 16保姆级教程:Windows Server 2019虚拟机安装全流程(含避坑指南)
VMware Workstation 16实战指南:Windows Server 2019虚拟机高效部署与深度优化 在数字化转型浪潮中,本地虚拟化环境搭建已成为开发者和运维人员的核心技能。作为业界标杆的VMware Workstation 16与Windows Server 2019的组合,能够完美模拟企业…...
英集芯-IP5316、IP5219有什么区别?详细总结一下
简介 IP5219和IP5316都是英集芯的充电管理IC,两款移动电源SOC芯片输出/输入参数基本一致,但是使用起来却有一些差异,下面就对两款IC使用中遇到的一些问题做一些总结。 IP5219:2.1A 充电 2.4A 放电集成 TYPE_C 协议移动电源 SOC; IP5316:集成 TYPE_C 协议的 2.4A 充电/2.4…...
