在某些情况下,编写自己的复制构造函数而不是自己的赋值运算符是个好主意吗

Are there situations where it would be a good idea to write your own copy constructor but not your own assignment operator?

本文关键字:自己的 赋值运算符 好主意 构造函数 复制 情况下      更新时间:2023-10-16

这个问题不言自明。如果你被要求创建其中一个,这是否意味着你也必须创建第二个?

通常需要编写这些内容,如上面的注释中所述。

然而,人们可以想象其他适合你问题的需求。例如,如果要计算程序中对象的数量。复制构造函数需要增加一个计数器,而赋值不会改变对象的数量,因此默认值会改变。

当分配给特定类型的对象没有意义时,您不会编写/删除assingment操作。不过,拥有一个副本ctor可能仍然有意义。

一个技术示例是一个具有引用成员的类。复制构造是可能的,复制赋值不是真的,因为你不能改变ref成员指向的内容。