c++ standard library 学习笔记-auto_ptr<T> 注意事项
2012-02-19 22:21
656 查看
书上有 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 语义会使你觉得不习惯,因为这牵扯到一个拥有权转移的问题.所以,请不要把她作为标准容器的元素.
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 语义会使你觉得不习惯,因为这牵扯到一个拥有权转移的问题.所以,请不要把她作为标准容器的元素.
相关文章推荐
- 《The C++ Standard Library》第45页 用const修饰auto_ptr的注意事项
- C++学习笔记之对文件的操作<1>
- C++ Standard Stl -- SGI STL源码学习笔记(01) auto_ptr
- C++学习笔记之对文件的操作<1>
- <C++学习笔记 -- 1> C++中的一些基本概念
- <C++学习笔记>预处理功能
- C/C++ standard library -- <cstring>(string.h)
- C++学习笔记之对文件的操作<1>
- <C++学习笔记>函数模板 template
- C++学习笔记之对文件的操作<1>
- <C++学习笔记一>——多继承
- C++学习笔记之对文件的操作<2>
- [置顶] 从零开始学C++之对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector .
- <C++学习笔记>引用中的&和&&区别
- C/C++:智能指针原理(运算符重载)、使用auto_ptr<A>
- C++学习笔记(第12章->类和动态内存分配)
- cocos2dx 自学笔记 <四> 瓦片地图 Tiled Map 学习
- &lt;More Effective C++&gt;笔记--运算符
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<Hibernate_实战演练>(三十七)
- RT-Thread 学习笔记(十三)--- 开启基于RTGUI的LCD显示功能(3)<触屏屏驱动移植和测试>