Effective STL 13~15(资源管理)

条款13:以对象管理资源

  • 为了防止资源泄漏,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放

这里的RAII 对象是有关c++智能指针,  unique_ptr   shared_ptr   weak_ptr  。尽量使用他们。

对应的用法请查看你的c++书籍。防止程序中 没有delete 对象造成的类存泄漏。

条款14:以资源管理类中小心 Coping 行为

  • 复制RAII 对象必须要复制它所管理的资源。
  • 普遍常见的RAII  class coping 行为是:抑制coping,实施引用计数法

​​​​​​​实施应用计数法的时候,使用shared_ptr  来替换  shared_ptr <class>  name;

条款15:在资源管理类中提供对原始资源的访问

  • APIs往往要求访问原始资源,所以每一个RAII class应提供一个“取得其管理的资源” 的办法
  • 对原始数据的访问可能经由显示转换或隐示转换。一般显示转换比较安全,隐示转换对客户比较方便

​​​​​​​一个简单的例子:

      我们喜欢用智能指针,std::shared_ptr  <Investment> pInv(CreateInvestmemt());

      有个函数  int daysHeld(const Investment * pi);

      这个时候你该如果处理呢?

      pInv.at();可以返回对应的class 指针类型。

      所以使用 int day = daysHeld(pInv.at());

      便可以处理数据, 有关显示隐示,这里就不再多说了。

发布了26 篇原创文章 · 获赞 7 · 访问量 4297

猜你喜欢

转载自blog.csdn.net/weixin_42126427/article/details/104443421