繁体   English   中英

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

[英]Why and when delete copy constructor and operator=

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

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

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

这与性能无关。 当复制您的类没有意义时,您禁止复制,即如果不清楚复制相关类的含义。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM