我们查看shared_ptr类摘要的时候, 可以看到一个特别的构造函数, 形如:
shared_ptr(Y* p, D d);
第一个参数是要被管理的指针, 与其它形式的构造函数一致; 第二个参数称为删除器, 他是一个接受Y*的可调用物, d(p)的行为应类似与delete p, 而且不应该抛出异常.
d可以是函数, 函数对象 lambda表达式, 但必须可拷贝. 此外, boost提供了一个自由函数get_deleter(shared_ptrconst & p), 它能够返回删除器的指针.
基于shared_ptr和定制删除器, 我们可以写出类似`退出作用域时回调`的代码来, 比如
 boost智能指针之shared_ptr cplusplus接口查询int main(){
boost::shared_ptr<void> p((void*)0,[](void* p)->void{
std::cout<<"this will call when scope end"<<std::endl;
});
return 0;
}
boost::share_ptr定制删除器 &cplusplus接口查询:等您坐沙发呢!