在某些情况下,编写自己的复制构造函数而不是自己的赋值运算符是个好主意吗
Are there situations where it would be a good idea to write your own copy constructor but not your own assignment operator?
这个问题不言自明。如果你被要求创建其中一个,这是否意味着你也必须创建第二个?
通常需要编写这些内容,如上面的注释中所述。
然而,人们可以想象其他适合你问题的需求。例如,如果要计算程序中对象的数量。复制构造函数需要增加一个计数器,而赋值不会改变对象的数量,因此默认值会改变。
当分配给特定类型的对象没有意义时,您不会编写/删除assingment操作。不过,拥有一个副本ctor可能仍然有意义。
一个技术示例是一个具有引用成员的类。复制构造是可能的,复制赋值不是真的,因为你不能改变ref成员指向的内容。
相关文章:
- 重载Singly Linked List中的赋值运算符
- 标准库类型的赋值运算符的引用限定符
- 标准::变体的赋值运算符
- C++ 中动态数组的赋值运算符
- 双链表C++的赋值运算符
- 派生自 std::exception 的类的赋值运算符
- 构造函数中的赋值运算符
- 为什么类的赋值运算符的返回类型通常是非常量(而不是常量)引用?
- 引用模板类型的赋值运算符需要非常量重载
- C++中动态分配的单向链表的赋值运算符 (MS Visual Studio 2015)
- C++的新增功能:创建 2D 数组并具有正确的赋值运算符:分割错误
- C++ 包含唯一指针成员变量的类的赋值运算符
- 使用带有下标运算符的赋值运算符将值分配给 std::map
- 是否有必要重载具有另一个类 B 的数据成员的类 A 的赋值运算符和复制构造函数?
- 链表的赋值运算符
- 在对类对象的赋值进行链接时获取垃圾值,使用按值返回类对象的赋值运算符重载
- 在基中使用派生类的赋值运算符
- 唯一指针中的赋值运算符错误
- 移动构造函数并移动类的赋值运算符
- 在某些情况下,编写自己的复制构造函数而不是自己的赋值运算符是个好主意吗