《Effective C++ 中文版 第三版》读书笔记
** 条款 14:在资源管理类中小心 copying 行为 **
RAII 守则:资源在构造期间获得,在析构期间释放。
许多时候允许 RAII 对象被复制并不合理。我们可以考虑:
1.禁止复制。
(1)将 copying 操作声明为 private
(2)或者设计一个不可以被复制的类
像 Toby 类这样:
class Toby: private UncopyToby{
public:
...
}
2.对底层资源使用 “引用计数法”。
而许多时候,使用资源管理类,我们需要:
(1)复制底部资源
(2)转移底部资源的拥有权
这个是 auto_ptr 奉行的复制意义
请记住:
- 复制 RAII 对象必须一并复制它所管理的资源,所以资源的 copying 行为决定 RAII 对象的 copying 行为
- 普通而常见的 RAII class copying 行为是:抑制 copying、实行引用计数法。不过其他行为也都可能被实现。
网友评论