boost 智能指针
来源:互联网 发布:电力系统保护计算软件 编辑:程序博客网 时间:2024/05/29 08:21
最近使用boost的智能指针,查看了一些帖子。总结如下:
智能指针分类:http://developer.51cto.com/art/201012/239004.htm
智能指针使用注意事项:http://blog.sina.com.cn/s/blog_45497dfa0101egbu.html
多线程安全性分析:http://blog.csdn.net/jiangfuqiang/article/details/8292906
http://my.oschina.net/costaxu/blog/103119 (这个帖子的结论很好,
1 shared_ptr是一个非常实用的智能指针。
2 shared_ptr的实现机制是在拷贝构造时使用同一份引用计数。
3 对同一个shared_ptr的写操作不是线程安全的。 对使用同一份引用计数的不同shared_ptr是线程安全的。
)
封装有基类、子类的智能指针类型转换:http://blog.csdn.net/bopzhou/article/details/6748763
http://blog.csdn.net/clever101/article/details/6950050
经过几天的试用,最终决定放弃在系统中使用boost::shared_ptr<T>.原因如下:
1.因为boost::shared_ptr<T>是以boost::shared_ptr<T>(T* p)建立智能指针,调用两次就会生成对于T* p的两个引用计数,比较危险。
2.总有情况需要将类内使用boost::shared_ptr<T>保存的对象取出,如果返回指针,出现情况1.如果返回boost::shared_ptr<T>引用,又存在A是T的子类,boost::shared_ptr<T>和boost::shared_ptr<A>互转的情况,很麻烦,而且处理不好很容易出错,对于使用系统的用户使用是个很不好的选择。
3.总有情况是对象要返回自身的智能指针(以this参数)。这时会返回boost::shared_ptr<Edge>(this),结果依据第一个原因,这种情况一定会生成两个计数,也就一定会出错。
所以boost::shared_ptr<T>这种非插入式(辅助式)只适合小范围、局部使用。插入式(句柄)指针才适合系统使用(上些大型的c++开源库,如vtk/osg均使用此方法)。
- Boost的智能指针
- 智能指针:boost学习
- Boost中的智能指针
- boost智能指针
- 【Boost】智能指针
- 使用Boost智能指针
- boost智能指针介绍
- Boost智能指针学习
- Boost智能指针:shared_ptr
- Boost智能指针小记
- Boost 中的智能指针
- boost:智能指针
- 使用Boost智能指针
- C++ Boost智能指针
- boost智能指针
- Boost之智能指针
- boost - 智能指针介绍
- boost智能指针
- 正保远程教育被曝篡改考核信息 操作者年入百万
- python idle 清屏
- oracle无监听错误解决步骤.docx
- J2EE搭建SpringMVC+hibernate开发环境
- Linux操作系统的内存使用方法详细解析
- boost 智能指针
- c#如何访问access
- Java发邮件程序
- 标题:图像处理网络资源( 转载)
- CocoaPods pod install/pod update更新慢的问题
- 数据库导入导出
- hidesBottomBarWhenPushed 使用
- JVM垃圾回收(GC)原理
- 通过正则表达式获取文件名