博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unique_ptr_c++11
阅读量:6238 次
发布时间:2019-06-22

本文共 1118 字,大约阅读时间需要 3 分钟。

unique_ptr 替代了原来的auto_ptr,指向对象具有唯一性,即同一时间只能有unique_ptr指向给定对象(和auto_ptr不同是禁止拷贝语义,

通过移动语义替代)

unique_ptr对象生命周期与其作用域范围保持一致,从创建直至其离开作用域

unique_ptr 指针和其所绑定对象关系:在智能指针生命周期内,可以改变其绑定对象,可以通过reset()重新指定,可以通过release方法释放其所有权,通过移动语义来转移其所有权

一、初始化方式

通过new
unique_ptr<Investment> up(new Investment());

通过普通指针

Investment *pInv = new Investment();
unique_ptr<Investment> up1(pInv);

通过make_unique

auto pInv = make_unique<Investment>();

通过move()函数

unique_ptr<Investment> up1 = std::move(up);

注意:unique_ptr不能被复制或者拷贝,下面的代码将出错:
unique_ptr<Investment> up1(up);              //error, can not be copy
unique_ptr<Investment> up2 = up;            //error, can not be assigned

但是,unique_ptr可以作为函数的返回值:

unique_ptr<Investment> GetPtr();        //function getthe unique pointer
unique_ptr<Investment> pInv = GetPtr(); // ok

unique_ptr 基本操作
unique_ptr<Investment> pInvestment;     // 创建一个空的智能指针
pInvestment.reset(new Investment());    //"绑定”动态对象
Investment *pI = pInvestment.release(); //释放所有权
pI= nullptr;                         //显式销毁所指对象,同时智能指针变为空指针。

管理动态数组
由于unique_ptr有std::unique_ptr<T[]>的重载函数,所以它可以用来管理数组资源
unique_ptr<int[]> pArray(new int[3]{1,3,3});

转载于:https://www.cnblogs.com/henryliublog/p/9055576.html

你可能感兴趣的文章
模拟终端打印效果特效
查看>>
forfiles命令批量删除N天前文件
查看>>
顺序队列
查看>>
(NO.00005)iOS实现炸弹人游戏(三):从主场景类谈起
查看>>
git/github初级运用自如
查看>>
《Netty 权威指南》—— NIO类库简介
查看>>
Codeforces 452 A. Eevee
查看>>
小鱼儿CTO赵兴国:基于阿里云的互联网+视频会议系统实践
查看>>
基于smack的即时聊天系统之文件传输功能实现
查看>>
Boa服务器的移植
查看>>
Linux网络编程入门
查看>>
help
查看>>
我的友情链接
查看>>
GIT服务器配置及同步站点目录
查看>>
我的友情链接
查看>>
以太坊中的nonce是什么
查看>>
我的友情链接
查看>>
14-9-11 C/C++课程设计--图书馆管理系---<time.h>中时间数据类型的学习记录
查看>>
java环境配置--转载
查看>>
IPAD2 开启手势教程、未越狱
查看>>