当前位置:  开发笔记 > 编程语言 > 正文

在C++中编写复制构造函数和赋值运算符的清单

如何解决《在C++中编写复制构造函数和赋值运算符的清单》经验,为你挑选了1个好方法。

请编写复制构造函数和赋值运算符在C++中需要执行的任务列表,以保证异常安全,避免内存泄漏等.



1> Luc Hermitte..:

首先要确保你真的需要支持副本.大部分时间情况并非如此,因此禁用两者是可行的方法.

有时,您仍然需要在多态层次结构中为类提供重复,在这种情况下:禁用赋值运算符,编写(受保护的?)复制构造函数,并提供虚拟clone()函数.

否则,在你写一个价值类的情况下,你又回到了Coplien的正交规范形式的土地上.如果你有一个不能轻易复制的成员,你需要提供一个拷贝构造函数,一个析构函数,一个赋值运算符和一个默认构造函数.这个规则可以改进,例如:"大二法则"

我还建议看一下有关赋值运算符的C++ FAQ,以及复制和交换习惯用语以及GOTW.


@Adrian:如果赋值运算符使用了copy-and-swap,则不需要进一步的保护.
还可以防止赋值运算符中的自我赋值.
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有