条款 14:在资源管理类中小心 copying 行为

《Effective C++ 中文版 第三版》读书笔记

** 条款 14:在资源管理类中小心 copying 行为 **

RAII 守则:资源在构造期间获得,在析构期间释放。

许多时候允许 RAII 对象被复制并不合理。我们可以考虑:

1.禁止复制。

(1)将 copying 操作声明为 private
(2)或者设计一个不可以被复制的类

像 Toby 类这样:

class Toby: private UncopyToby{
public:
    ...
}

2.对底层资源使用 “引用计数法”。

而许多时候,使用资源管理类,我们需要:
(1)复制底部资源
(2)转移底部资源的拥有权

这个是 auto_ptr 奉行的复制意义

请记住:

  1. 复制 RAII 对象必须一并复制它所管理的资源,所以资源的 copying 行为决定 RAII 对象的 copying 行为
  2. 普通而常见的 RAII class copying 行为是:抑制 copying、实行引用计数法。不过其他行为也都可能被实现。

你可能感兴趣的:(条款 14:在资源管理类中小心 copying 行为)