介绍一下左值右值,左值引用和右值引用

        先说左值和右值,简单来说可以放到等号左边的值叫做左值,可以放到等号右边的值叫做右值。

        详细的说,左值是有明确的地址,是具有名字的,是可以对左值进行取地址操作的,因为它在内存中有明确的地址和名字,可以赋值也可以被赋值,比如说变量,数组等都是左值。

        右值在内存中没有明确的地址,没有名字,不能长期在内存中驻留,不能对右值进行取地址的操作。

        右值在c++11中又分为纯右值和将亡值,常量和临时变量都是纯右值,纯右值就是传统意义上的右值,纯右值在它的表达式结束后就会被销毁。将亡值是右值,将亡值是表示即将被销毁,可以安全地被“窃取”(也就是移动操作)资源的对象。

       那什么是右值引用?

        为了实现将亡值,C++引入了一种特殊的引用类型,即右值引用,也就是说右值引用是为了实现将亡值得,右值引用的标识符是&&。只有将亡值能够绑定到右值引用上。

        但将亡值和纯右值不同,因为将亡值有识别符,可以通过识别符找到他们。使用std::move()函数可以将左值转为将亡值,这样就可以用右值引用来获取其资源,延长其生命周期。

int&& rvr = 1;   // 将亡值,它有一个识别符"rvr",我们可以通过rvr找到它。int foo(){ return 1; }
int val1 = foo(); // 调用foo()返回临时值,此为纯右值,它没有识别符,我们不能通过识别符找到它。

使用move来将左值转换成右值后调用移动构造函数,来将其内存转移

#include <iostream>
#include <utility> // for std::movevoid print(int&& num)
{std::cout << num << std::endl;
}int main()
{int a = 5;  // a是一个左值print(std::move(a));  // 使用std::move将a转换为右值return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s+wordpress+zabbix+elastic+filebeat+kibana服务搭建以及测试

一&#xff0c;环境&#xff1a;docker&#xff0c;k8s&#xff0c;zabbix&#xff0c;以及搭建worpdress&#xff0c;elasticsearch&#xff0c;filebeat&#xff0c;kibana 二&#xff0c;主机分配&#xff1a; 名称host详述个人博客3192.168.142.133 搭配mysql8.0.36的数据…

DVWA靶场-暴力破解

DVWA是一个适合新手锻炼的靶机&#xff0c;是由PHP/MySQL组成的 Web应用程序&#xff0c;帮助大家了解web应用的攻击手段 DVWA大致能分成以下几个模块&#xff0c;包含了OWASP Top 10大主流漏洞环境。 Brute Force——暴力破解 Command Injection——命令注入 CSRF——跨站请…

SublimeText4 安装

Sublime Text 可以编写html&#xff0c;css&#xff0c;js&#xff0c;php等等&#xff0c;是一个轻量、简洁、高效、跨平台的编辑器。 图1&#xff1a;SublimeText官网 Sublime Text具有漂亮的用户界面和强大的功能&#xff0c;例如代码缩略图&#xff0c;Python的插件&#…

Java的编程之旅41——字符流

目录 1.字符流的简介 2.字符的编码与解码 3.字符流读写操作 1.字符流写入 2.字符流复制文件 4.FileWriter&FileReader 5.缓冲区高效读写 6.序列化与反序列化 1.字符流的简介 在Java中&#xff0c;字符流是用于处理字符数据的输入输出流。它是以字符为单位进行处理&a…

读取txt文件并统计每行最长的单词以及长度

读取txt文件并统计每行最长的单词以及长度 题目 在 D:\\documant.txt 文本中,文件中有若干行英文文本,每行英文文本中有若干个单词&#xff0c;每个单词不会跨行出现每行至多包含100个字符,要求编写一个程序,处理文件,分析各行中的单词,找到每行中的最长单词&#xff0c;分别…

Git的常用操作命令

Git是一个分布式版本控制系统&#xff0c;广泛应用于软件开发项目中来追踪和控制代码的修改历史。 Git常用命令如下&#xff1a; 配置用户信息&#xff1a; # 设置全局用户名和邮箱 git config --global user.name "Your Name" git config --global user.email &quo…

MediaCodec源码分析 Codec消息轮转

前言 本文梳理MediaCodec的消息轮转流程,基于7.0代码。 MediaCodec底层实现为JMediaCodec、MediaCodec.cpp、ACodec,他们之间是通过media包下的ALooper、AHandler、AMeesage这一套机制进行线程间通信的。 本文就是分析这里的流程,先分析ALooper这一套,然后再分析MediaCod…

群晖docker安装sql server

安装步骤 开启群晖 SSH&#xff0c;通过 SSH 工具连接到群晖&#xff0c;运行下面的命令拉取mssql 2019 镜像 sudo docker pull mcr.microsoft.com/mssql/server:2019-latest然后在 docker 中就可以看到该镜像&#xff1a; 在群晖 docker 共享文件夹中创建 mssql2009 文件夹 …

ABAP - cl_gui_alv_grid cl_salv_table的各种处理

这篇文章主要是记录一下cl_gui_alv_grid 和 cl_salv_table 两种方式的ALV的字段&#xff0c;事件等的处理 举例&#xff0c;下面这个是用一个screen&#xff0c;显示2个ALV&#xff1b;上面这一个是用alv grid的&#xff1b;下面那一个是用salv去实现的 alv grid 主要涉及&am…

力扣77-组合

组合问题 题目链接 class Solution { private:vector<vector<int>> ans;//保存结果vector<int> path;//保存符合条件的结果void dfs(int n,int k,int startindex){if(path.size() k){ans.push_back(path);//表明找到了符合条件的结果&#xff0c;将其保存…

神舟通用-神通MPP

1、国产MPP 神通MPP是以多年大型通用数据库领域的研发实力为基础&#xff0c;集深厚的航天信息化建设经验&#xff0c;集成多项先进技术&#xff0c;为满足航天、政府、金融、电信等行业的海量数据分析统计应用需求而打造的分布式数据库软件&#xff0c;具有负载衡、在线扩展、…

Vue-插槽

文章目录 跨域什么是插槽默认插槽具名插槽作用域插槽什么是作用域插槽 跨域 什么是跨域? 跨域是指在浏览器中&#xff0c;一个网站的脚本或文档试图访问另一个网站的资源时&#xff0c;由于同源策略的限制&#xff0c;如果这三个方面之一存在差异&#xff1a;协议、域名&…

基于ssm的志愿者招募系统的设计与实现(程序+文档+数据库)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…

nginx有几种启动方式

Nginx 通常可以以两种主要的方式启动&#xff1a;作为前台进程运行或作为守护进程&#xff08;后台&#xff09;运行。 前台运行&#xff1a; 当Nginx以前台模式运行时&#xff0c;它会在命令行保持活动状态&#xff0c;所有的日志输出都会直接显示在命令行上。这种模式通常用于…

【Mysql优化】

目录 前言 1.在Mysql中&#xff0c;如何定位慢查询&#xff1f; 2.那这条SQL语句执行的很慢&#xff0c;如何分析&#xff08;优化&#xff09;呢&#xff1f; 3.了解过索引吗&#xff1f;&#xff08;什么是索引&#xff1f;&#xff09; 4.索引的底层结构了解过吗&#…

Redis底层数据结构之List

文章目录 1. Redis 6的list源码分析1. Redis 7的list源码分析 1. Redis 6的list源码分析 首先我们查看一下redis 6关于list的相关配置&#xff1a; config get list*可以看见redis 6的quicklist底层使用的数据结构是ziplist list-compress-depth&#xff1a;表示一个quicklis…

【力扣hot100】刷题笔记Day25

前言 这几天搞工作处理数据真是类似我也&#xff0c;还被老板打电话push压力有点大的&#xff0c;还好搞的差不多了&#xff0c;明天再汇报&#xff0c;赶紧偷闲再刷几道题&#xff08;可恶&#xff0c;被打破连更记录了&#xff09;这几天刷的是动态规划&#xff0c;由于很成…

elementui el-select组件多选设置初始值无法修改问题

elementui el-select组件多选设置初始值无法修改问题 对list直接赋值后点击修改select框&#xff0c;此时数据已改变但显示无变化。 <el-select v-model"form.optrList" multiple placeholder"请选择"><el-optionv-for"item in list":k…

APK漏洞扫描工具

一、APKDeepLens是一个基于python的工具&#xff0c;旨在扫描Android应用程序&#xff0c;专门针对OWASP TOP 10移动漏洞。 工具&#xff1a;python3.8或者以上版本 安装 git clone https://github.com/d78ui98/APKDeepLens/tree/main cd /APKDeepLens python3 -m venv venv…

Node携手MongoDB探险旅行⛏️

Node携手MongoDB探险旅行⛏️ 本篇文章&#xff0c;学习记录于&#xff1a;尚硅谷&#x1f3a2; 文章简单学习总结&#xff1a;如有错误 大佬 &#x1f449;点. 本篇不适合纯新手&#xff0c;因为本人已经使用很多数据库&#xff0c;很多数据库概念…就不会进行解释&#xff…