C++智能指针–auto_ptr指针

这里先介绍auto_ptr的缺陷:

因为auto_ptr并不是完美无缺的,它的确很方便,但也有缺陷,在使用时要注意避免。首先,不要将auto_ptr对象作为STL容器的元素。C++标准明确禁止这样做,否则可能会碰到不可预见的结果
 
auto_ptr的另一个缺陷是将数组作为auto_ptr的参数: auto_ptr  pstr (new char[12] ); //数组;为定义
 然后释放资源的时候不知道到底是利用delete pstr,还是 delete[] pstr;
 
然后收集了关于auto_ptr的几种注意事项:
 1、auto_ptr不能共享所有权。
 2、auto_ptr不能指向数组
 3、auto_ptr不能作为容器的成员。
 4、不能通过赋值操作来初始化auto_ptr
 std::auto_ptr p(new int(42));    //OK
 std::auto_ptr p = new int(42);    //ERROR
 这是因为auto_ptr 的构造函数被定义为了explicit
 5、不要把auto_ptr放入容器
 这个指针已经被丢弃了!

C++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码 http://www.linuxidc.com/Linux/2014-05/101227.htm

读C++ Primer 之构造函数陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm

读C++ Primer 之智能指针 http://www.linuxidc.com/Linux/2011-08/40177.htm

读C++ Primer 之句柄类 http://www.linuxidc.com/Linux/2011-08/40175.