unique_ptr是独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr,如下面错误用法:

    std::unique_ptr<T> myPtr(new T);
std::unique_ptr<T> myOtherPtr = myPtr; // error

  但是unique_ptr允许通过函数返回给其他的unique_ptr,还可以通过std::move来转移到其他的unique_ptr,注意,这时它本身就不再拥有原来指针的所有权了。相比于auto_ptr而言,unique_ptr是显示的转移,而不是莫名其妙的报废,因为auto_ptr调用拷贝构造函数后,原来的对象就失效了。

    std::unique_ptr<T> myPtr(new T);
std::unique_ptr<T> myOtherPtr = std::move(myPtr); // ok

  对于一般的程序使用std::unique_ptr就够了,如果是多线程方面,可能存在共同使用的问题,可以使用std::shared_ptr,注意不要引起循环引用。

最新文章

  1. java中关键字volatile的作用
  2. OpenSessionInView模式
  3. 自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理
  4. 体验最火的敏捷——SCRUM(厦门,2014.1.4)
  5. DB天气app冲刺二阶段第十一天(完结)
  6. python写的自动签到脚本。
  7. MySQL 大DML操作建议
  8. java学习笔记day03
  9. avalon前端js直接通过ajax请求传一个对象到后台
  10. 【Python】 字符串的相关小知识点
  11. Javascript深入之创建对象的多种方式以及优缺点
  12. php编程 之 php基础二
  13. $Django 路飞之小知识回顾,Vue之样式element-ui,Vue绑定图片--mounted页面挂载--路由携带参数
  14. C#在WinForm下使用HttpWebRequest上传文件
  15. Windows Azure Virtual Network (13) 跨数据中心之间的虚拟网络点对点连接VNet Peering
  16. 深入浅出的webpack构建工具---PostCss(五)
  17. 强制禁用gitlab的双因子认证:Two-Factor Authentication
  18. 014-通过JDB调试,通过HSDB来查看HotSpot VM的运行时数据
  19. Python记录_day21 模块
  20. VSTO:使用C#开发Excel、Word【5】

热门文章

  1. 基于Composer Player 模型加载和相关属性设置
  2. PHP设计模式(七)适配器模式(Adapter For PHP)
  3. java面向对象中的关键字
  4. 【SAP业务模式】之ICS(三):前台操作
  5. MySQL加密
  6. js实现四大经典排序算法
  7. Firefox开发者专版浏览器,Web开发者利器.
  8. About me
  9. 图形数据库Neo4J简介
  10. iOS开发系列--地图与定位