c++ - 关于何时在 C++ 类中显式启用/禁用复制的指南?

标签 c++ class-design copying

一位同事正在清理几个图书馆。为此,他一直在阅读 C++ 的 API 设计,其中讨论了在 C++ 类中显式启用或禁用复制。这与 Sutter 和 Alexandrescu 在他们的 C++ 编码标准 中所说的相同。

他同意人们应该遵循这一建议,但这两本书似乎都没有说明什么时候启用或禁用的指导原则。

有任何一种或另一种方式的指导吗?谢谢!

最佳答案

这取决于类在应用程序中扮演的角色。除非 类代表一个值,其中身份不重要,你应该 禁止复制和分配。同样,如果类是多态的。作为一个 通常规则,如果你正在分配类类型的对象 动态地,它不应该是可复制的。相反,如果类(class)是 可复制,你不应该动态分配它的实例。 (但 有一些异常(exception),动态分配并不少见 避免复制大对象,即使在语义上有不同的看法。)

如果您正在设计一个低级库,选择就不那么明确了。 像 std::vector 这样的东西可以在应用程序中扮演许多角色;在 他们中的大多数,复制是不合适的,但禁止复制会 使它在少数合适的地方无法使用。

关于c++ - 关于何时在 C++ 类中显式启用/禁用复制的指南?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457810/

相关文章:

c++ - Qt 多线程通信

python - 为什么在 C++ 中从标准输入读取行比 Python 慢得多?

C++ 如何处理所有可能的玩家移动输入?

c# - 当 web.config 不可用时如何解决对 applicationSettings 的引用

c# - 您将如何用 Java 或 C# 编写高效的循环缓冲区?

c++ - 我的一些关于 List C++ 的函数有问题

使用指向 uint64_t 的指针复制 C 中的自定义字符串会导致段错误

c++ - 获取用户输入并将其插入动态分配数组,初级 C++

复制数组导致 0?

c++ - 在 C++ 中设计多维数组