请列出复制构造函数和赋值运算符在 C++ 中需要执行的任务,以保持异常安全、避免内存泄漏等。
最佳答案
首先确定您确实需要支持拷贝。大多数情况下并非如此,因此禁用两者是可行的方法。
有时,您仍需要从多态层次结构中提供对类的复制,在这种情况下:禁用赋值运算符,编写( protected ?)复制构造函数,并提供虚拟 clone() 函数。
否则,如果您正在编写一个值类,您将回到 Coplien 的正交规范形式的领域。如果您有一个无法简单复制的成员,则需要提供一个复制构造函数、一个析构函数、一个赋值运算符和一个默认构造函数。此规则可以细化,例如:The Law of The Big Two
我还建议您查看 C++ FAQ regarding assignment operators ,并在 copy-and-swap idiom在 GOTW .
关于c++ - 在 C++ 中编写复制构造函数和赋值运算符的 list ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/214891/