为什么以及何时删除副本构造函数和运算符=

问题描述 投票:2回答:2

作为C ++新手,我想知道为什么显式地'禁用'或删除类的=运算符和复制构造函数很有用:

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

我想这是有道理的,如果班级是单身人士。但是还有其他情况吗? (也许这与性能问题有关?)

c++ operators copy-constructor
2个回答
5
投票

这与性能无关。只要没有必要复制类,即如果不清楚复制所涉及的类意味着什么,就禁止复制。

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


0
投票

我认为以下是不错的补充::

如果要禁止按值传递对象,则可以将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.