boost学习之-shared_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更合理


最后,虽然该指针功能很强大,但是还是简单使用,以减少代码维护成本;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值