您的位置:首页 > 运维架构

scoped_ptr 与auto_ptr 区别

2012-10-18 16:13 190 查看
scoped_ptr 与auto_ptr 都是简单的智能指针,能够保证在离开作用域后对象被自动释放。

原理都很相似:

都是利用一个栈上的对象来管理一个堆上的对象,从而使得堆上的对象随着栈上的对象销毁而

自动删除。

不同的地方在于:

1.scoped_str不能拷贝,不能转让所管理对象的所有权,而auto_ptr可以,

也就是说,scoped_str对象是不能作为函数的返回值的,而auto_ptr可以。

(现实原理就是:

1.重载赋值操作符,使其为私有来禁止赋值,

2.把拷贝构造函数设置为私有来禁止拷贝)

相同点:

1. 不能共享所有权,即不能用于STL的容器中;(而shared_ptr 智能指针可以共享权限)

2. 不能用于管理数组对象

由于scoped_ptr是通过delete来删除所管理对象的,而数组对象必须通过deletep[]来删除,

因此,scoped_ptr是不能管理数组对象的,如果要管理数组对象需要使用boost::scoped_array类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: