Effective C++ 第十四条 Think carefully about copying behavior in ...
在资源管理类中小心 copying
当我们使用类来管理资源(较为复杂,不仅仅是一个智能指针的事)的时候,我们通常需要设计自己的资源管理类。在构建此类的时候,对于此类的 copying 行为需要多加注意。对于类的 copying 行为的设定,通常有四种参考:
禁止复制
设置计数器存储当前资源被引用数
复制底层资源
转移底层资源的=拥有权
现在对上述四条一一解释:
禁止复制
这一点可以参照 第六条,在类中删除掉 assignment 和 copy constructor
设计计数器存储当前资源被引用数
这个就是设置一个 static 的变量来存储当前对象被引用的次数,当被引用次数为0的时候释放资源。此设计类似于智能指针中的 shared_ptr.
复制底层资源
这一点如同常规的复制,但是要注意不要犯了“浅拷贝”的错误,要“深拷贝”,不了解区别的话可以查看我写的 第五条,此设计如同普通的复制。
转移底部资源控制权
这一点就相当于资源只有一份,若 b 复制 a 则 a 的资源转移到 b 手中,a 失去控制权,类似于 unique_ptr。