首页 > 解决方案 > 删除copy-ctor和copy-assignment - public、private还是protected?

问题描述

为了使对象不可复制,我们可以显式删除其复制构造函数和复制赋值运算符。

public我的问题是:在课堂的,privateprotected部分中做这件事的正确位置是什么?而且 - 这个选择有什么不同吗?

标签: c++c++11access-modifiersdeleted-functions

解决方案


什么是正确的地方——在课堂的公共、私人或受保护的部分?

会把它们放在publicsection中。

这是因为删除构造函数或赋值运算符与生成private/是正交的protected;当这些没有被删除时,它们是public默认的。在我看来,将删除内容放在这两个部分之一中似乎是在暗示“如果我没有删除它们,我会将它们设为私有/受保护”——这不是您想在您的案例中传达的信息。

但是请注意,编译器并不关心您将删除放在哪个部分。


推荐阅读