书上有 4 点,如下:
1.auto_ptrs 之间不能共享拥有权
这个很好理解,2 个 auto_ptrs 拥有同一个对象,如果在某个时间点其中之一将对象删除了,那么另一个自然就成为野指针了,此时再用它进行读写内存,后果就会很严重.
2.并不存在针对 array 而设计的 auto_ptrs
原因很简单,因为 auto_ptr 源码中使用 delete 而不是 delete [] 来释放所拥有对象的内存的.
3.auto_ptrs 绝非一个"四海通用"的智能指针
因为 auto_ptr 并非是一种基于引用计数技术的智能指针.
4.auto_ptrs 不满足 stl 容器对其元素的要求
这个也很好理解,因为对于这个不怎么好用的智能指针来说,她的 copy 和 assign 语义会使你觉得不习惯,因为这牵扯到一个拥有权转移的问题.所以,请不要把她作为标准容器的元素.