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

Boost 学习(一) scoped_ptr

2013-04-18 11:56 141 查看
scoped_ptr :

使用裸指针来写异常安全和无错误的代码是很复杂的。使用智能指针来自动地把动态分配对象的生存期限制在一个明确的范围之内,是解决这种问题的一个有效的方法,并且提高了代码的可读性、可维护性和质量。scoped_ptr 明确地表示被指物不能被共享和转移。正如你所看到的,std::auto_ptr可以从另一个auto_ptr那里窃取被指物,那怕是无意的,这被认为是auto_ptr的最大的缺点。正是这个缺点使得scoped_ptr成为auto_ptr最好的补充。当一个动态分配的对象被传送给scoped_ptr,
它就成为了这个对象的唯一的拥有者。因为scoped_ptr几乎总是以自动变量或数据成员来分配的,因此它可以在离开作用域时正确地销毁,从而在执行流由于返回语句或异常抛出而离开作用域时,总能释放它所管理的内存。

在以下情况时使用 scoped_ptr :

在可能有异常抛出的作用域里使用指针

函数里有几条控制路径

动态分配对象的生存期应被限制于特定的作用域内

异常安全非常重要时(始终如此!)

scoped_ptr 相当于局部变量。

auot_ptr 赋值给另一个auto_ptr 后内容丢失。

更详细的介绍:
http://blog.sina.com.cn/s/blog_5d8cc3e10100vgkl.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: