auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个小小的auto_ptr所蕴含的价值与理念。
auto_ptr的出现,主要是为了解决“被异常抛出时发生资源泄漏”的问题。即如果我们让资源在局部对象构造时分配,在局部对象析构时释放。这样即使在函数执行过程时发生异常退出,也会因为异常能保证局部对象被析构从而保证资源被释放。auto_ptr就是基于这个理念而设计, 这最早出现在C++之父Bjarne Stroustrup的两本巨著TC++PL和D&E中,其主题为"resource acquisition is initialization"(raii,资源获取即初始化),然后又在Scott Meyer的<<More Effective C++>>中相关章节的推动下,被加入了C++标准库。
下面我就列出auto_ptr的源代码,并详细讲解每一部分。因为标准库中的代码要考虑不同编译器支持标准的不同而插入了不少预编译判断,而且命名可读性不是很强(即使是侯捷老师推荐的SGI版本的stl,可读性也不尽如人意), 这里我用了Nicolai M. Josuttis(<<The C++ standard library>>作者)写的一个auto_ptr的版本,并做了少许格式上的修改以易于分析阅读。...
[C++] SmartPtr / auto_ptr
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:CAD复制命令如何使用
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
关于C++中的auto_ptr
C++的auto_ptr auto_ptr所做的事情,就是动态分配对象以及当对象不再需要时自动执行
c++ reference optimization delete semantic -
auto_ptr中的auto_ptr_ref
先看看类auto_ptr的内部实现机制: template<typename _Tp> class auto_ptr { private: &nb
职场 休闲 构造函数 auto_ptr auto_ptr_ref