02 | 自己动手,实现C++的智能指针

  1. 回顾

回顾

//使用RAII来防止内存泄露
//构造的时候使用局部变量来包裹指针
//这样当离开作用域或者发生异常的时候,会调用析构函数来进行内存回收
class shape_wrapper {
public:
  explicit shape_wrapper(
    shape* ptr = nullptr)
    : ptr_(ptr) {}
  ~shape_wrapper()
  {
    delete ptr_;
  }
  shape* get() const { return ptr_; }

private:
  shape* ptr_;
};
  • 相较于只能指针欠缺的东西
    • 模板
    • 运算符重载
    • 引用计数