只允许基础指针的一个所有者。 可以移到新所有者(具有移动语义),但不会复制或共享(即我们无法得到指向同一个对象的两个unique_ptr)。 替换已弃用的 auto_ptr。 相较于 boost::scoped_ptr。 unique_ptr 小巧高效;大小等同于一个指针,支持 rvalue 引用,从而可实现快速插入和对 STL 集合的检索。在头文件<memory>中。

unique_ptr

为了避免和库里面的名称混淆,我自己实现的时候用的UniquePtr加以区分。

同一时刻,只能有一个unique_ptr指向某个内存区域,所以他是禁止拷贝的。unique_ptr本身是个对象,他生命周期结束时,会自动调用~unique_ptr(),将其所指对象销毁。unique_ptr指针与其所指对象的关系:在智能指针生命周期内,可以改变智能指针所指对象,如创建智能指针时通过构造函数指定、通过reset方法重新指定、通过release方法释放所有权、通过移动语义转移所有权。

主要有这几个功能:

1、能写出异常安全的代码

2、在容器中保存指针

 int main()
{
vector<unique_ptr<int>> vec;
unique_ptr<int> p(new int());
vec.push_back(std::move(p)); // 使用移动语义
}

unique_ptr不支持对象间的拷贝和赋值。(困惑:class unique_ptr是不是应该继承noncopyable?但没见过这么实现的额)。

我们先来看实现:

最新文章

  1. 解决mysql too many connections的问题
  2. 动态执行python脚本
  3. C#字符串截取
  4. 【JS】HTMLprop与attr的区别
  5. linux默认网关的设置
  6. css固定div头部不随滚动条滚动
  7. DOTween文档
  8. Xcode 遇到 App Transport Security has blocked a cleartext HTTP 错误
  9. 直关的sql 联级更新语句
  10. WINCE 开机自动弹USB连接窗口问题(已解决)
  11. iOS之上线被拒
  12. 图片左右循环连续滚动代码,解决marquee的留白问题
  13. 正则匹配&lt;img src=&quot;xxxxxx&quot; alt=&quot;&quot; /&gt;标签的相关写法
  14. 浙大 pat 1038 题解
  15. New Year Tree 【DFS序+先段数区间查询修改+二进制保存状态】
  16. Python encode() 方法(转)
  17. Centos7常见问题及解决方法
  18. LOV抛出值无效的异常
  19. php的精确计算
  20. mongodb的安装和权限管理

热门文章

  1. 图解 HTTP 笔记(六)——HTTP 首部
  2. MyISAM与InnoDB之间的区别
  3. 升级chrome浏览器导致网站登录功能不能用
  4. pip安装pillow——死循环:[WinError5] &amp; [TypeError:&#39;module&#39; object is not callable]
  5. EasyNetQ使用(五)【基于主题的路由,控制队列名称】
  6. 移动端自动化测试之android模拟器问题集合
  7. 【世界之大,我用Python】Ubuntu 自动删除自带软件
  8. 重置mysql数据库root密码
  9. Hadoop学习笔记之二 文件操作
  10. Spring 工程分层