欢迎光临散文网 会员登陆 & 注册

Effective C++ 第十四条 Think carefully about copying behavior in ...

2023-01-16 02:18 作者:九思519  | 我要投稿

在资源管理类中小心 copying

当我们使用类来管理资源(较为复杂,不仅仅是一个智能指针的事)的时候,我们通常需要设计自己的资源管理类。在构建此类的时候,对于此类的 copying 行为需要多加注意。对于类的 copying 行为的设定,通常有四种参考:

  • 禁止复制

  • 设置计数器存储当前资源被引用数

  • 复制底层资源

  • 转移底层资源的=拥有权

现在对上述四条一一解释:

禁止复制

这一点可以参照 第六条,在类中删除掉 assignment 和 copy constructor

设计计数器存储当前资源被引用数

这个就是设置一个 static 的变量来存储当前对象被引用的次数,当被引用次数为0的时候释放资源。此设计类似于智能指针中的 shared_ptr.

复制底层资源

这一点如同常规的复制,但是要注意不要犯了“浅拷贝”的错误,要“深拷贝”,不了解区别的话可以查看我写的 第五条,此设计如同普通的复制。

转移底部资源控制权

这一点就相当于资源只有一份,若 b 复制 a 则 a 的资源转移到 b 手中,a 失去控制权,类似于 unique_ptr。

Effective C++ 第十四条 Think carefully about copying behavior in ...的评论 (共 条)

分享到微博请遵守国家法律