美文网首页
Effective C++ 学习备忘录三

Effective C++ 学习备忘录三

作者: 仰简 | 来源:发表于2022-02-27 13:01 被阅读0次

资源管理

  • 条款 13 - 以对象管理资源
  • 为了防止资源泄漏,请使用 RAII 对象,它们在构造函数中获取资源,在析构函数中释放资源。
  • 两个常用的 RAII classes 分别是 tr1::shared_ptr 和 auto_ptr (c++98),前者通常是较佳选择,因为其 Copy 行为比较直观。若选择 auto_ptr ,复制动作会使得被复制物指向 null。
  • 条款 14 - 在资源管理类中小心 copying 行为
  • 复制 RAII 对象必须一并复制其所管理的所有资源,所以资源 copying 行为决定 RAII 对象的 copying 行为。
  • 普遍而常见的 RAII class copying 行为是:抑制 copying ,施行引用计数法。不过其他行为也可能被实现。
  • 条款 15 - 在资源管理类中提供对原始资源的访问
  • APIs 往往要求访问原始资源,所以每一个 RAII class 应该提供一个 “取得其所管理之资源” 的办法。
  • 对原始资源的访问可能经由显式转换或者隐式转换。一般而言显式转换比较安全,但隐式转换对客户比较方便。
  • 条款 16 - 成对使用 new 和 delete 要采用相同形式
  • 如果你在 new 表达式中使用了 [],那么你在 delete 表达式中也要使用 [],如果你在 new 表达式中没有使用 [],那么你在 delete 表达式中也不要使用 []。
  • 条款 17 - 以独立语句将 newed 的对象置入智能指针中
  • 以独立语句将 newed 对象置入智能指针中,如果不这样做,一旦异常抛出,有可能导致难以察觉的资源泄漏。

相关文章

  • Effective C++ 学习备忘录三

    资源管理 条款 13 - 以对象管理资源 为了防止资源泄漏,请使用 RAII 对象,它们在构造函数中获取资源,在析...

  • 要读的书书名

    1, 重读《Effective C++》《 More Effective C++》《by Scott Meye...

  • Effective C++ 学习备忘录五

    实现 条款 26 - 尽可能延后变量定义式的出现时间 尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程...

  • Effective C++ 学习备忘录四

    设计与声明 条款 18 - 让接口容易被正确使用,不易被误用 好的接口容易被正确使用,不容易被误用。你应该在你的所...

  • Effective C++ 学习备忘录六

    继承与面向对象设计 条款 32 - 确定你的 public 塑模出 is-a 关系 "public继承" 意味 i...

  • Effective C++ 学习备忘录一

    让自己习惯 C++ 条款 01 - 视 C++ 为一个联邦 请记住 C++ 高效编程守则视状况而变化,取决你用 C...

  • Effective C++ 学习备忘录二

    构造 / 析构 / 赋值运算 条件 05 - 了解 C++ 默默编写并调用哪些函数 编译器可以暗自为 class ...

  • Effective C++ 学习备忘录七

    模型与泛型编程 条款 41 - 了解隐式接口和编译期多态 classes 和 templates 都支持 Inte...

  • Effective C++ 学习备忘录八

    定制 new 和 delete 条款 49 - 了解 new-handler 的行为 set_new_handle...

  • Effective C++ 学习备忘录九

    杂项讨论 条款 53 - 不要轻忽编译器的警告 严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告...

网友评论

      本文标题:Effective C++ 学习备忘录三

      本文链接:https://www.haomeiwen.com/subject/bkyqrrtx.html