c++11 auto unique_ptr 等
2016-06-07 10:14
323 查看
c++11 条款21:尽量使用std::make_unique和std::make_shared而不直接使用new
c++11 条款18: 使用std::unique_ptr来进行独享所有权的资源管理
https://msdn.microsoft.com/zh-cn/library/hh279676.aspx
unique_ptr 不共享它的指针。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动unique_ptr。这意味着,内存资源所有权将转移到另一 unique_ptr,并且原始 unique_ptr 不再拥有此资源。我们建议你将对象限制为由一个所有者所有,因为多个所有权会使程序逻辑变得复杂。因此,当需要智能指针用于纯 C++ 对象时,可使用 unique_ptr,而当构造 unique_ptr 时,可使用make_unique Helper 函数。
下图演示了两个 unique_ptr 实例之间的所有权转换。
unique_ptr 在 STL 的 <memory> 标头中定义。它与原始指针一样有效,并可用于 STL 容器。将 unique_ptr 实例添加到 STL 容器很有效,因为通过unique_ptr 的移动构造函数,不再需要进行复制操作。
以下示例演示如何创建 unique_ptr 实例并在函数之间传递这些实例。
c++11 条款18: 使用std::unique_ptr来进行独享所有权的资源管理
https://msdn.microsoft.com/zh-cn/library/hh279676.aspx
unique_ptr 不共享它的指针。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动unique_ptr。这意味着,内存资源所有权将转移到另一 unique_ptr,并且原始 unique_ptr 不再拥有此资源。我们建议你将对象限制为由一个所有者所有,因为多个所有权会使程序逻辑变得复杂。因此,当需要智能指针用于纯 C++ 对象时,可使用 unique_ptr,而当构造 unique_ptr 时,可使用make_unique Helper 函数。
下图演示了两个 unique_ptr 实例之间的所有权转换。
unique_ptr 在 STL 的 <memory> 标头中定义。它与原始指针一样有效,并可用于 STL 容器。将 unique_ptr 实例添加到 STL 容器很有效,因为通过unique_ptr 的移动构造函数,不再需要进行复制操作。
以下示例演示如何创建 unique_ptr 实例并在函数之间传递这些实例。
相关文章推荐
- C/C++文件读与写(函数fopen,fwrite,fprintf,fgetc,fputc,fgets,fclose)
- C++异常对象三种方式传递的综合比较
- [C++]Deque with iterator实现细节
- C/C++ - 基础知识
- C++之tinyXML使用 .
- C/C++常考面试题
- c++ primer(第五版)学习笔记及习题答案代码版(第十四章)重载运算与类型转换
- Facebook开源C语言事件框架:libPhenom
- c++函数重载
- VS2013 编程环境设置,如何显示C++程序行号。
- 博客,也可以用来学习,今天申请开通CSDN博客 ,希望以此帮助自己学好C++
- 【经验】C语言编程最常见的15个错误【写给粗心的同学】
- 例题】二级C语言上机编程十例【附详解】
- 揭秘】二级C语言上机考试评分原理
- 为什么首选C语言
- gdi+ gdiplus创建保存动态gif动画成功 C++语言 有意者请联系我
- C语言标准
- Leetcode_c++: Search in Rotated Sorted Array II (081)
- c++第七次上机作业
- c++第七次上机实验