C++智能指针

来源:互联网 发布:java开发图书管理系统 编辑:程序博客网 时间:2024/05/21 17:45

(1)std::auto_ptr<T>
存储内容: 单个指针(new 分配)
指针特性: 可复制(但同时必定转移所有权),不能用于STL 容器中。
总之,建议不要使用,除非很简单的使用。

(2)boost::scoped_ptr<T>
存储内容: 单个指针(new 分配)
删除时机: scoped_ptr 析构时,或是通过显式地调用reset 方法,其生命期相当于局部变量。
指针特性: 不可复制,不能用于 STL 容器中。

(3)boost::scoped_array<T>
存储内容: 指针数组(new[] 分配)
其他方面与 scoped_ptr 相同。

(4)boost::shared_ptr<T>
存储内容: 单个指针(new 分配)
删除时机: 最后一个 shared_ptr 析构时,或是通过显式地调用reset 方法。
指针特性: 可复制可赋值,可用于 STL 容器,可用于多线程环境。
boost中最常用的智能指针,使用引用计数来维护。

(5)boost::shared_array<T>
存储内容: 指针数组(new[] 分配)
其他方面与 shared_ptr 相同。

(6)boost::weak_ptr<T>
存储已由 shared_ptr 管理的对象的弱引用。
指针特性: 可复制可赋值,可用于 STL 容器。
共享一个share_ptr的内存,但是无论是构造还是析构一个weak_ptr 都不会影响引用计数器。

原创粉丝点击