用法:
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更合理
最后,虽然该指针功能很强大,但是还是简单使用,以减少代码维护成本;