基本概念:
unique_ptr是专属所有权,所以unique_ptr管理的内存,智能被一个对象持有,不支持赋值和复制。
移动语意:
unique_ptr禁止了拷贝语意,但有时我们也需要转移所有权,于是提供了移动语意,即可以使用std::move()进行控制所有权的转移。
下面来看代码实例。

#include <iostream>
#include <memory>using namespace std;int main(int argc, const char * argv[])
{// insert code here...{//在这个范围之外,unique_ptr被释放auto i = unique_ptr<int>(new int(10));cout << *i <<endl;}//unique_ptrauto w = make_unique<int>(10);cout <<*(w.get())<<endl;//auto w2 = w; //编译报错,如果想要把w复制给w2,是不可以的//因为复制从语义上来说,两个对象将共享一块内存。//unique_ptr只支持移动语义,即如下auto w2 = std::move(w);cout <<((w.get()!= nullptr)?(*w.get()):-1)<<endl;  //此时w为nullptrcout <<((w2.get()!= nullptr)?(*w2.get()):-1)<<endl; //由于移动语义move用法,w2相当于原w1return 0;
}

1.由上面的例子即可看出unique_ptr的用法,同auto_ptr一样,都只是针对单对象地址操作,一旦在实际开发中我们需要在不同地方对都去访问这个对象那么就不可以了。所以比较推荐在实际开发中使用shared_ptr和weak_ptr。这个可以参考我的博客shared_ptr与weak_ptr
2.上面的例子我用到了unique_ptr和make_unique两种职能指针,实际上他们的核心思想一样,大同小异,有一些小小的却别可以参考下面的博客。
unique_ptr和make_unique区别

unique_ptr智能指针相关推荐

  1. C++新特性探究(18.2):C++11 unique_ptr智能指针详解

    C++11 unique_ptr智能指针   作为智能指针的一种,unique_ptr 指针自然也具备"在适当时机自动释放堆内存空间"的能力.和shared_ptr指针最大的不同之 ...

  2. C++11 unique_ptr智能指针详解

    文章目录 0.应用场景 1.初始化方式 2.常用操作 3.例子 例子1 创建unique_ptr并以引用形式传递给函数 例子2 用vector管理unique_ptr 例子3 unique_ptr作为 ...

  3. C++ 智能指针(unique_ptr / shared_ptr)代码实现

    文章目录 unique_ptr 智能指针的实现 shared_ptr 智能指针的实现 指针类型转换 unique_ptr 智能指针的实现 一个对象只能被单个unique_ptr 所拥有. #inclu ...

  4. C++11中的智能指针unique_ptr、shared_ptr和weak_ptr详解

    目录 1.引言 2.什么是智能指针? 3.在Visual Studio中查看智能指针的源码实现 4.独占式指针unique_ptr 4.1.查看unique_ptr的源码实现片段 4.2.为什么uni ...

  5. 【C++ 语言】智能指针 引入 ( 内存泄漏 | 智能指针简介 | 简单示例 )

    文章目录 I . 智能指针 引入 II . 智能指针 简介 III . 智能指针 简单示例 I . 智能指针 引入 1 . 示例前提 : 定义一个 Student 类 , 之后将该类对象作为智能指针指 ...

  6. 【C++】智能指针 Smart Pointer

    智能指针 智能指针 Smart Pointer auto_ptr 智能指针的自实现 shared_ptr weak_ptr unique_ptr 智能指针 Smart Pointer 用来改善传统指针 ...

  7. c++11:智能指针

    我们在程序运行的过程中,经常出现段错误.内存持续增大等,是C++显式内存管理存在的问题,主要归纳为以下几点: 野指针:一些内存单元已经释放,但之前指向它的指针还在使用. 重复释放:程序试图释放已经被释 ...

  8. cwinthread*线程指针怎么销毁结束_C++知识点:智能指针

    之前面试虾皮时问到了智能指针相关知识点,当时答的很没有条理,这里整理一下权当笔记. 根据<C++ Primer Plus>中的解释,智能指针是行为类似于指针的模板对象.当函数分配堆内存时, ...

  9. C++ 手动实现简单的智能指针类

    何为智能指针,即不需要用户再自动手动New和Delete掉,由内部类进行new和delete,这样可以防止用户忘记释放掉指针而造成的内存泄漏. 这里简单的实现unique_ptr智能指针的方式. 头文 ...

最新文章

  1. 一个妹子的大厂后台面试经验总结
  2. 连休8天!关于2020年国庆节、中秋节放假安排的通知!!!
  3. C指针原理(1)-ATT汇编
  4. PyQt特殊对话框介绍
  5. 总裁导航V2.5.0-秒收录网站
  6. map的四种遍历方式
  7. Webpack打包构建太慢了?试试几个方法
  8. 计算机的五笔咋么学,电脑五笔输入法怎么学
  9. win10照片背景黑色改为白色
  10. keil5安装STC芯片包
  11. ai训练 样本大小_成本低、周期短,小样本学习能否成为AI落地的速效药?
  12. 为cfree5 配置舒心的编译环境
  13. 理解什么叫管理vlan与业务VLAN,理解DTP及trunk的配置
  14. ORACLE-递归查询(分层查询)
  15. 解决MAC OS X不识别Kindle Fire
  16. python对文件的写作方法_python读写csv文件 - 作文写作问答 - 归教作文网
  17. 手机VBUS OVP电路介绍
  18. 视 频 传 输 技 术
  19. ROS机器人程序设计(原书第2版).
  20. Android常见设计模式——观察者模式 (Observer Pattern)

热门文章

  1. synchronized 详解,偏向锁,轻量锁,重量锁
  2. webtest 文章
  3. Android-01:扫描SD卡以.xxx结尾的文件
  4. Python之数据分析(numpy中的多项式拟合)
  5. 单片机 驱动 标签打印机tsc_指令打印与驱动打印随笔
  6. 从零开始学前端:CSS引入 --- 今天你学习了吗?(CSS:Day07)
  7. autobank渗流分析计算教程_仿真百科 | 多孔介质渗流现象
  8. Python实现多进程/多线程同时下载单个文件
  9. lane是什么意思_什么是Trunk?Trunk详解
  10. 插件显示缩进_硬核,这 3 款 IDE 插件让你的代码牢不可破