作为一名c ++ newbe,我想知道为什么明确禁用'或者删除类的=运算符和复制构造函数:
SomeClass& operator=(SomeClass&) = delete;
SomeClass(SomeClass&) = delete;
我想如果这个班级是一个单身人士,那就会发生这种情况。但还有其他情况吗? (也许这与性能问题有关?)
答案 0 :(得分:4)
这与性能无关。如果复制你的课程没有意义,你就不允许复制,即如果不清楚复制该课程的意思是什么。
着名的例子是具有复杂内部状态和std::unique_ptr
的标准IO流,无法复制,因为它是指向其托管对象的唯一指针。
答案 1 :(得分:1)
我认为以下是一个很好的补充:
如果要禁止按值传递对象,则可以删除它们。