[C++11]move资源的转移

从实现上讲,std::move 基本等同于一个类型转换:static_cast<T&&>(lvalue);,函数原型如下:

template<class _Ty>
_NODISCARD constexpr remove_reference_t<_Ty>&& move(_Ty&& _Arg) _NOEXCEPT
{	// forward _Arg as movablereturn (static_cast<remove_reference_t<_Ty>&&>(_Arg));
}

代码如下:

#include <iostream>
#include <list>
using namespace std;class Test
{
public:Test() :m_num(new int(100)){cout << "construct" << endl;cout << "address = " << m_num << endl;}Test(const Test & a) :m_num(new int(*a.m_num)){cout << "copy construct" << endl;}//有右值引用的构造函数称为移动构造函数//移动构造函数 -> 复用其他对象中的资源(堆内存)//m_num 浅拷贝Test(Test && a) :m_num(a.m_num){a.m_num = nullptr;cout << "move construct" << endl;}~Test(){cout << "destruct" << endl;delete m_num;}public:int *m_num;
};Test&& getobj()//将亡值
{return Test();
}Test getobj01()
{Test t;return t;
}int main()
{//通过一个匿名对象给一个右值初始化,再次使用这个t2会被编译器看做是一个左值,t2是左值引用。Test && t2 = getobj();cout << "address = " << t2.m_num << endl;//Test && t3 = t2;//t2会被编译器看做是一个左值Test && t3 = move(t2);Test t = getobj01();//t为左值Test &&t4 = move(t);list<string> ls1{ "hello","wordl","nihao","shijie" };list<string> ls2 = ls1;list<string> ls3 = move(ls1);//如果以后不用ls1了,就可以用move,减少拷贝次数,提高效率return 0;
}

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

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

相关文章

网址导航html5源码图标版,最新仿hao123网址导航(晓风网址导航系统) v4.2

使用说明 采用aspaccess架构&#xff0c;简单易用 access数据库已做防下载处理&#xff0c;安全放心 程序不能放到子目录&#xff0c;否则无法生成全站 上传程序进入后台设置一下网站信息&#xff0c;生成所有HTML页面 首页网站标志LOGO目录位置&#xff1a;/images/logo_140.g…

基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型

上一篇文章使用自定义仓储完成了简单的增删改查案例&#xff0c;有心的同学可以看出&#xff0c;我们的返回参数一塌糊涂&#xff0c;显得很不友好。在实际开发过程中&#xff0c;每个公司可能不尽相同&#xff0c;但都大同小异&#xff0c;我们的返回数据都是包裹在一个公共的…

奔小康赚大钱 HDU - 2255( 二分图匹配KM算法详解)

题目 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革&#xff1a;重新分配房子。 这可是一件大事,关系到人民的住房问题啊。村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住&#xff08;如果有老百姓没房子住的话&#xff0c;容易引起不安定因素&…

记一次排查线上程序内存的忽高忽低,又是大集合惹祸了

一&#xff1a;背景1. 讲故事昨天继续还技术债&#xff0c;优化一轮后的程序拉到线上后内存继续忽高忽低&#xff0c;低的时候20G&#xff0c;高的时候30G&#xff0c;过了一会又下降了几个G&#xff0c;毫无疑问&#xff0c;程序中有什么集合或者什么操作占用了大量内存&#…

[C++11]forward完美转发

// 函数原型 template <class T> T&& forward (typename remove_reference<T>::type& t) noexcept; template <class T> T&& forward (typename remove_reference<T>::type&& t) noexcept;// 精简之后的样子 std::forward…

广州计算机专业王健,王健-计算机与信息工程学院

2.在国内外公开发行刊物上发表的学术论文(1)Jian Wang. A Novel K-NN Classification Algorithm for Privacy Preserving in Cloud Computing. Research Journal of Applied Sciences, Engineering and Technology, Vol. 4, Issue: 22, 2012 (EI源刊).(2)Jian Wang. Experimen…

Pipe HDU - 2150(判断线段相交+向量叉乘线代详解)

题目&#xff1a; 经过激烈的争夺&#xff0c;Lele终于把那块地从Yueyue的手里抢了回来。接下来&#xff0c;Lele要开始建造他的灌溉系统。 通过咨询Lele的好友——化学系的TT&#xff0c;Lele决定在田里挖出N条沟渠&#xff0c;每条沟渠输送一种肥料。 每条沟渠可以看作是一…

win7如何将计算机移至桌面,如何将win7电脑桌面的文件转移到其他盘中?

想必很多朋友都和小编一样&#xff0c;是一个嫌麻烦的人&#xff0c;是一个不怎么爱收拾的人吧?这种人有一个通病&#xff0c;那就是喜欢将一些重要的文件放置在win7 64位纯净版下载的桌面上&#xff0c;这样的话&#xff0c;不仅容易找到&#xff0c;而且方便使用&#xff0c…

Source Generator:C# 9 将迎来编译时元编程

源码生成器&#xff08;Source Generator&#xff09;是 C#编译器的一个新特性&#xff0c;开发者可以使用编译器生成的元数据检查用户代码&#xff0c;并生成附加的源文件&#xff0c;与程序的其他部分一起编译。受 F#类型提供程序的启发&#xff0c;C#源码生成器的目标也是为…

凸包算法知识总结

首先&#xff0c;什么是凸包&#xff1f; 假设平面上有p0~p12共13个点&#xff0c;过某些点作一个多边形&#xff0c;使这个多边形能把所有点都“包”起来。当这个多边形是凸多边形的时候&#xff0c;我们就叫它“凸包”。 处理何种问题&#xff1a;凸包可以看成在木板上钉许多…

计算机用英语表示方法有哪些,在计算机领域中,通常用英文单词“bit”来表示( )...

答案查看答案解析:【解析题】现代计算机系统由硬件系统和软件系统组成。人类直接操控硬件系统太复杂了&#xff0c;所以&#xff0c;将硬件的功能进行封装&#xff0c;只提供一个接口给人类使用&#xff0c;这个接口就是操作系统。【解析题】计算机网络的主要功能是 。【解析题…

[C++11]shared_ptr使用的注意事项(内存被重复析构,内存泄漏问题)

shared_ptr使用的注意事项: 1.不能使用一个原始地址初始化多个共享智能指针 2.函数不能返回管理了this的共享智能指针对象 3.共享智能指针不能循环引用 不能使用一个原始地址初始化多个共享智能指针 代码如下: #include <iostream> #include <memory> using name…

一文解读使用WinDbg排查iis 中CPU占用高的站点问题

一、概述在Window服务器部署程序后&#xff0c;可能因为代码的不合理或者其他各种各样的问题&#xff0c;会导致CPU暴增&#xff0c;甚至达到100%等情况&#xff0c;严重危及到服务器的稳定以及系统稳定&#xff0c;但是一般来说对于已发布的程序&#xff0c;没法即时看到出问题…

Power Network POJ - 1459(EK算法模板+详解)

题意&#xff1a; 总共有a个节点&#xff0c;其中有发电站b个、用户c个和调度器a-b-c个三种节点&#xff0c;每个发电站有一个最大发电量&#xff0c;每个用户有个最大接受电量&#xff0c;现在有d条有向边&#xff0c;边有一个最大的流量代表&#xff0c;最多可以流出这么多电…

[C++11]shared_ptr共享智能指针的初始化与使用

使用智能指针需要添加头文件: 代码如下: #include <memory>shared_ptr使用的注意事项: 1.不能使用一个原始地址初始化多个共享智能指针 2.函数不能返回管理了this的共享智能指针对象 3.共享智能指针不能循环引用 初始化: 1.通过构造函数初始化 代码如下: std::shar…

ap计算机科学课程内容,AP计算机科学课程补习有哪些知识点梳理?

计算机作为当前最被看好的一大专业领域&#xff0c;很多同学们在AP课程学习期间会选修AP计算机科学课程补习这门课来帮助自己打好知识基础。那么AP计算机科学课程补习有哪些知识点梳理?今天学通国际教育老师为大家介绍。1. Introductory Java Language FeaturesPackage And Cl…

人在职场,表达似水

最近几天集中在和部门内的小伙伴做1&#xff1a;1Talk。发现有不少人表达能力真的不是很好&#xff0c;而且水平长期停滞不前。现场与他们分享了一些我的经验&#xff0c;趁热打铁也想在这里分享给大家。表达能力不好本身就是做技术的人身上的一个常见标签。如果仅仅是标签也就…

计算机网络原理习题

下一跳路由器计算 设某路由器建立了如下路由表&#xff08;这三列分别是目的网络、子网掩码和下一跳路由器&#xff0c;若直接交付则最后一列表示应当从哪一个接口转发出去&#xff09;&#xff1a; 128.96.39.0 255.255.255.128 接口0 128.96.39.128 255.255.255.128 接口1…

[C++11]弱引用智能指针weak_ptr初始化和相关的操作函数

弱引用智能指针 std::weak_ptr 可以看做是 shared_ptr 的助手&#xff0c;它不管理 shared_ptr 内部的指针。std::weak_ptr 没有重载操作符 * 和 ->&#xff0c;因为它不共享指针&#xff0c;不能操作资源&#xff0c;所以它的构造不会增加引用计数&#xff0c;析构也不会减…