指针(3)智能指针总览
来源:互联网 发布:深圳pmp培训机构 知乎 编辑:程序博客网 时间:2024/06/05 05:08
scoped_ptr不能被复制,shared_ptr能复制:
使用boost::scoped_ptr的时候必须注意,它不允许进行复制操作,一旦声明了一个指向某内存空间的指针,那么就不可以通过another_p = p;的方式来分配内存空间的新所有权。
auto_ptr不能指定删除器(因而不能管理内存之外的其他资源),shared_ptr能指定删除器
[上述Common Requirements小节摘自Boost文档]
设计哲学:
使用scoped_ptr可以让阅读你代码的程序员知道你的意图--仅仅在当前作用域中使用RAII机制,并且放弃转让所有权。
避免std::auto_ptr在转让所有权语义上的陷阱,同时也让程序员知道此资源不可转让。
常用于Handle/Body(pImpl)惯用法,简化资源管理。
不提供release()成员是为了保证scoped_ptr的所有权不会被转移,防止引起歧义。
key:scoped_ptr比shared_ptr有着更强的暗示,暗示其作用域与对象所有权,更好的帮助其他程序员维护既有代码
scoped_ptr提供了RAII机制,是良好的C++编程风格。
scoped_ptr可以在绝大多数情况下取代std::auto_ptr,而余下的情况则可以使用shared_ptr。
不可以用作STL容器,因为其不支持copy语义。
scoped_ptr非常适合实现pImpl惯用法。
scoped_ptr不可以托管动态分配的数组,请使用scoped_array。
0 0
- 指针(3)智能指针总览
- 智能指针3
- [3]C++智能指针
- 智能指针3---SharedPtr
- 智能指针(待续)
- 智能指针(smart_pointer)
- 智能指针(二)
- 智能指针(一)
- 智能指针(二)
- 智能指针(续)
- 智能指针
- 智能指针
- 智能指针
- 智能指针
- 智能指针
- 智能指针
- 智能指针
- 智能指针
- 【学习并改进】黑马程序员-张孝祥-银行业务调度系统
- OCP-1Z0-051-题目解析-第26题
- Permute Program
- 面向对象设计——泛型的愉快体验
- Oracle学习笔记之Oracle 数据库操作之用户管理
- 指针(3)智能指针总览
- log4j小结
- 算法导论学习-渐进表达式
- Leetcode || Triangle
- 擅长排列的小明
- NYOJ 103 A+B Problem II
- 《C++程序设计原理与实践》读书笔记
- Oracle学习笔记之oracle 数据库操作之表的管理
- 广告业内人士称跟踪cookie最多还能活五年