C++ shared_ptr

智能指针是行为类似于指针的类对象,可以将new获得(直接或者间接)的地址赋给这种对象。当智能指针过期时,其析构函数将使用delete来释放内存。因此,如果将new返回的地址赋给这些对象,将无需记住稍后释放这些内存:在智能指针过期时,这些内存将自动被释放。

  shared_ptr<double>pd;
  double *p_reg = new double;
  pd = p_reg; // not allowed (implicit conversion)
  pd = shared_ptr<double>(p_reg);  // allowed (implicit conversion) 
  shared_ptr<double>pshared = p_reg; // not allowed (implicit conversion)
  shared_ptr<double>pshared(p_reg);  // allowed (implicit conversion) 

由于智能指针模板类的定义方式,智能指针对象的很多方面都类似于常规指针。例如,如果ps是一个智能指针的对象,则可以对它执行解除引用操作(*ps)、用它来访问结构成员(ps->puffIndex)、将它赋给指向相同类型的常规指针。还可以将智能指针对象赋给另一个同类型的智能指针对象。
如果程序要使用多个指向同一个对象的指针,应选择share_ptr。

posted @ 2022-08-02 22:43  Happinesspill  阅读(33)  评论(0)    收藏  举报