首页 > 编程语言 >C++11语法——std::move()

C++11语法——std::move()

时间:2023-11-05 17:33:45浏览次数:38  
标签:11 std 右值 move 左值 C++ 引用

std::move()


在C++中,std::move() 用于将对象转换为右值引用。



关于左值、左值引用、右值、右值引用

左值是一个表示数据的表达式(比如变量名或者解引用的指针),程序可以获取其地址
传统的C++引用,即是左值引用。

C++11新增右值引用,用 && 表示。
右值是可出现在赋值表达式的右边,但不能对其应用地址运算符的值(比如字面常量、像x+y的表达式以及返回值的函数前提是该函数返回的不是引用
出现了右值引用,就可以用右值引用可关联到右值了



move操作

在C++中,move操作是一种将对象的所有权从一个对象转移到另一个对象的机制,它允许我们避免不必要的拷贝操作,从而提高程序的性能。

在C++11中,标准库提供了一个非常有用的函数 std::move(),它可以将一个左值强制转换为右值引用。具体来说,std::move() 函数将一个左值强制转换为右值引用,并返回一个指向该右值引用的指针。这个指针可以被传递给其他函数,以实现移动语义。

std::move() 调用之后,原左值对象仍然存在,但你不能再假定它包含以前的值。在技术上,该对象仍然是可用的,但只有 销毁 和 赋值 操作可以安全使用。所以为了使源对象不能再被操作,需要将源对象的指针或资源设置为一个无效或空的状态,从而确保源对象的析构函数不会对这些资源进行操作,比如为指针设置为 nullptr

标签:11,std,右值,move,左值,C++,引用
From: https://www.cnblogs.com/vLiion/p/17810787.html

相关文章

  • android studio 编译Telegram源码经验总结(2023-11-05)
    前言Telegram是一款强大的端到端加密IM,专注于安全性和速度,支持Android/IOS/Windows/macOS等平台,功能丰富,运行流畅,免费开源,代码具有学习和研究意义。一、androidtelegram源码下载地址:github:https://github.com/DrKLO/Telegram.git二、编译环境的选择:Windows版本:1064位;Andro......
  • 2023/11/4
    简单看完翁恺C语言入门后的一些难点经典的素数打印,以及观察改良后的代码,还有构造素数表2023/11/4二进制的补码很关键,理解了它就能理解字节的知识8个字节的二进制数的范围,加了unsigned就非负且乘二了,还加了有形象的图说明超过那个范围就会回环往复,inf表示无穷,nan表示不......
  • 231105校内赛
    T1构造题没啥好说的,大样例一眼出规律#include<bits/stdc++.h>#defineN310usingnamespacestd;intn,l[N][N],r[N][N],a[N][N];intmain(){ freopen("squ.in","r",stdin); freopen("squ.out","w",stdout); ios::sync_with_stdio(0......
  • 【杂题乱写】AtCoder-ARC115
    AtCoder-ARC115_FMigration*把问题转化成在某个限制\(mid\)下求初始局面和最终局面能到达的最小代价局面,如果相等则说明可达。比较局面的方式是比较权值,如果相等按字典序比较。对每个节点\(u\)求出权值比\(u\)小或权值与\(u\)相等且编号比\(u\)小的节点中,与\(u\)......
  • 11.5 做题记录
    [ABC167D]Teleporter一眼有循环节,然后就秒了。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=2e5+10;intn,k,a[N],vis[N],xhj=0;pair<int,int>bs[N];signedmain(){ cin>>n>>k; for(inti=1;......
  • P1156 垃圾陷阱
    P1156垃圾陷阱基本思路[受这题的影响](P2370yyy2015c01的U盘-加固文明幻景-博客园(cnblogs.com)),我总觉得这题不应该直接把时间当作状态方程的值,于是搞了\(F[i][j]\),为前\(i\)个物品,前\(j\)时间内能到达的最大高度,然后又搞一个数组维护最优时间,但我的能力根本行不通。......
  • 20211314王艺达学习笔记8
    Unix/Linux系统编程第五章定时器及时钟服务5.1硬件定时器定时器由时钟源和可编程计数器组成。时钟源会产生周期性电信号。计数器减为0时,计数器向CPU生成一个定时器中断,计数器周期称为定时器刻度,是系统的基本计时单元。5.2个人计时定时器实时时钟(RTC)即使在个人计算机关机......
  • delphi 监测抖音新增评论以及解决x-bogus签名验证(2023-11-5)
    一、工作原理及流程:  1、从aweme接口取得aweme评论总数量;  2、与之前的数量比较,如果有新增评论;  3、从comment评论接口统计评论以及评论回复数量,得出新增评论数量;  4、按时间排序评论,找出新增评论;  5、如果有新增评论,通过微信公众号发送消息到手机通知。......
  • 2023-2024-1 20211211 第五章学习笔记
    第五章学习笔记一、知识点归纳二、苏格拉底挑战三、问题解决四、实践过程截图time系统调用C语言实现......
  • 机智云GE211的具体调试过程
    机智云GE211的具体调试过程可以概括为以下几个步骤:通过USB转TTL工具将机智云GE211转接板连接到安装了机智云串口助手的设备上,实现数据的串口通信协议数据的收发。下载机智云调试助手工具,并使用该工具进行调试。具体过程包括填写机智云调试助手配置、添加新增的产品、打开模拟MCU等......