为什么以及何时删除复制构造函数和 operator=

Why and when delete copy constructor and operator=

作为 c++ 新手,我想知道为什么显式 'disable' 或删除 class 的 = 运算符和复制构造函数是有用的:

SomeClass& operator=(SomeClass&) = delete;
SomeClass(SomeClass&) = delete;

如果 class 是单例,我想这就有意义了。但是还有其他情况吗? (也许这与性能问题有关?)

这与性能无关。只要复制您的 class 没有意义,您就禁止复制,即如果不清楚复制有问题的 class 意味着什么。

著名的例子是具有复杂内部状态的标准 IO 流和 std::unique_ptr 无法复制,因为它是指向其托管对象的唯一指针。

我认为以下是一个很好的补充::

如果你想禁止按值传递对象,你可以删除它们。