一位同事正在清理几个图书馆。为此,他一直在阅读 C++ 的 API 设计,其中讨论了在 C++ 类中显式启用或禁用复制。这与 Sutter 和 Alexandrescu 在他们的 C++ 编码标准 中所说的相同。
他同意人们应该遵循这一建议,但这两本书似乎都没有说明什么时候启用或禁用的指导原则。
有任何一种或另一种方式的指导吗?谢谢!
最佳答案
这取决于类在应用程序中扮演的角色。除非 类代表一个值,其中身份不重要,你应该 禁止复制和分配。同样,如果类是多态的。作为一个 通常规则,如果你正在分配类类型的对象 动态地,它不应该是可复制的。相反,如果类(class)是 可复制,你不应该动态分配它的实例。 (但 有一些异常(exception),动态分配并不少见 避免复制大对象,即使在语义上有不同的看法。)
如果您正在设计一个低级库,选择就不那么明确了。
像 std::vector
这样的东西可以在应用程序中扮演许多角色;在
他们中的大多数,复制是不合适的,但禁止复制会
使它在少数合适的地方无法使用。
关于c++ - 关于何时在 C++ 类中显式启用/禁用复制的指南?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6457810/