标准库和boost库中几个智能指针的比较
来源:互联网 发布:mac coat风衣 编辑:程序博客网 时间:2024/06/04 18:50
这些智能指针在设计的时候,一个关键的问题就是所有权的控制。如果把指针所指向的对象比作电视机的话,那么指针就是观众。第一个人需要看电视的时候需要打开它,没人看的时候就要保证把电视关掉。对于std::auto_ptr,boost::shared_ptr和scoped_ptr,情况如下:
1. std::auto_ptr:auto_ptr这个种族很有趣,每次只让一个人看电视,大家可以换着看,由最后那个不想看的人关掉。当把一个auto_ptr赋值给另一个时,就好比换一个人看电视似的。总之,电视只能一个人看,第二个人想看第一个就得让位。
2. boost::shared_ptr:这个种族就很大方了,有好节目大家一起看:)只要最后一个看电视的人走的时候关掉就好了。看电视的每个人都知道当时有多少人在看,所以最后一个人知道自己的确是最后一个人。
3. boost::scoped_ptr:这是最自私的种族,每个电视只能让一个人看,别人门都没有。所以你不要试图去复制一个scoped_ptr对象。自己的电视自己处理,为了省电自己也得关吧,的确很安全:)
所以,auto_ptr的机理就是复制时转移所有权,也就是所指的对象永远最多为一个auto_ptr对象所有,这样就能保证对象能安全的释放。shared_ptr基于引用计数,当把一个shared_ptr赋给另一个时,引用计数加一,当一个shared_ptr析构时,引用计数减一,当减为零时释放对象。而scoped_ptr不允许复制,所以自始至终对象由唯一的scoped_ptr创建,维护并释放。
- 标准库和boost库中几个智能指针的比较
- 标准库和boost库中几个智能指针的比较
- boost库中智能指针的发展
- 【Boost】boost库中智能指针概述
- boost库的智能指针
- 浅析C++标准库与boost库中的智能指针
- c++ boost 库中提供的share_ptr(智能指针)
- c++ boost 库中提供的share_ptr(智能指针)
- 模拟实现c++标准库和boost库中的智能指针
- 【Boost】boost库中智能指针——weak_ptr
- 【Boost】boost库中智能指针——scoped_ptr
- 【Boost】boost库中智能指针——shared_ptr
- 【Boost】boost库中智能指针——intrusive_ptr
- 浅谈BOOST库里面的智能指针
- C++“准”标准库Boost学习指南(1):智能指针Boost.smart_ptr
- Boost库智能指针学习
- Boost库智能指针学习
- BOOST库 之 智能指针
- 函数指针数组
- Excel快速上手小技巧
- CentOS 5.x 字体(微软雅黑)美化方法
- Eclipse 获取当前工程下某文件
- 我要长大
- 标准库和boost库中几个智能指针的比较
- 无风险套利之打新
- win7下开启telnet服务
- win 7 学JAVA
- 平台数据库迁移linux > windows
- First Bolg
- struts2如何实现select标签和doubleselect标签
- CMMB 全国各地市频率规划表
- BIOS中断和DOS中断