回顾
//使用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_;
};
- 相较于只能指针欠缺的东西
- 模板
- 运算符重载
- 引用计数