boost学习之-shared_ptr
2012-07-07 19:13
369 查看
用法:
1 shared_ptr是具有引用计数功能的指针,一般用于复制操作很昂贵,或代表的东西被多个东西共享;
引用计数功能分为侵入式和非侵入式,侵入式要求类提供增加或减少计数的函数或数据成员,而非侵入式的没有这方面要求
2 可以在构造时传入删除器,使用自己的删除方法,这一点很有用,因为用途更广泛
3 shared_ptr之间可以复制
4 可以从裸指针,另外一个shared_ptr构造
5 Pimpl用法中可以自动完成复制
6 可以用于标准容器中
用于文件的例子:
{
FILE* f=fopen("test.txt","r");
if (f==0) {
std::cout << "Unable to open file\n";
throw file_exception();
}
boost::shared_ptr<FILE> my_shared_file(f,&fclose);
// 定位文件指针
fseek(&*my_shared_file,42,SEEK_SET);
}
我比较看重文件的这个例子,shared_ptr虽然是被划分为用于管理内存的智能指针,但是用于管理资源更合理,叫share_resource_ptr更合理
最后,虽然该指针功能很强大,但是还是简单使用,以减少代码维护成本;
1 shared_ptr是具有引用计数功能的指针,一般用于复制操作很昂贵,或代表的东西被多个东西共享;
引用计数功能分为侵入式和非侵入式,侵入式要求类提供增加或减少计数的函数或数据成员,而非侵入式的没有这方面要求
2 可以在构造时传入删除器,使用自己的删除方法,这一点很有用,因为用途更广泛
3 shared_ptr之间可以复制
4 可以从裸指针,另外一个shared_ptr构造
5 Pimpl用法中可以自动完成复制
6 可以用于标准容器中
用于文件的例子:
{
FILE* f=fopen("test.txt","r");
if (f==0) {
std::cout << "Unable to open file\n";
throw file_exception();
}
boost::shared_ptr<FILE> my_shared_file(f,&fclose);
// 定位文件指针
fseek(&*my_shared_file,42,SEEK_SET);
}
我比较看重文件的这个例子,shared_ptr虽然是被划分为用于管理内存的智能指针,但是用于管理资源更合理,叫share_resource_ptr更合理
最后,虽然该指针功能很强大,但是还是简单使用,以减少代码维护成本;
相关文章推荐
- boost学习scoped_ptr,shared_ptr
- Boost学习--初窥shared_ptr
- C++学习 boost学习之-shared_ptr
- boost学习之--shared_ptr
- Boost 关于 shared_ptr 的学习心得
- Boost学习--再窥shared_ptr
- Boost学习 (二)shared_ptr
- Boost源码学习---shared_ptr.hpp
- 学习笔记四:boost智能指针:scoped_ptr和shared_ptr
- Boost源代码学习---shared_ptr.hpp
- boost::weak_ptr和enable_shared_from_this
- 多索引容器boost::multi_index_container储存共享智能指针boost::shared_ptr
- boost::shared_ptr的线程安全性
- caffe 源码学习(三) SyncedMemory 与 shared_ptr
- boost>shared_ptr
- 学习笔记:shared_ptr陷阱
- Boost.shared_ptr必须注意的一些地方
- boost::weak_ptr和enable_shared_from_this
- 如何把this指针转换成boost的shared_ptr
- boost之shared_ptr,weak_ptr计数