12.1.4节练习

void f(destination &d /* 其它参数 */)
{
    connection c = connect(&d);
    shared_ptr<connection> p(&c, end_connection);
    //使用链接
    //当f退出时(即使由于异常而退出),connection 会被正确关闭
}
  • 不使用相同的内置指针初始化(或reset)多个智能指针。
  • 不delete  get()返回的指针
  • 不使用get()初始化或reset另一个智能指针。
  • 如果使用get()返回的指针,记住当最后一个对应的智能指针销毁后,你的指针就变成无效了。
  • 如果你使用智能指针管理资源而不是new分配内存,记住传递给它一个删除器(自己写释放函数  默认的是将其看做一块动态内存用delete释放。
void end_connection(connection *p) //这里是只能传入*p吗和 delete一样的数据类型?
{
    disconnection(*p);
}

练习12.14:编写你自己版本的用shared_ptr管理connection的函数。

猜你喜欢

转载自blog.csdn.net/xnnswmzdszyd/article/details/90294987