gpt4 book ai didi

c++ - 为什么我要将复制构造函数和赋值运算符设为私有(private)并在 C++ 中实现?

转载 作者:可可西里 更新时间:2023-11-01 17:04:49 32 4
gpt4 key购买 nike

灵感来自 this question .

通常将复制构造函数和赋值运算符设为private 的原因是 make the class non-copyable这样对象只能被创建和销毁,而不能被复制——大多数时候是因为复制它们没有意义。在这种情况下,复制构造函数和赋值运算符都被设为私有(private) 并且未实现 - 如果该类不可复制,则任何人都不应复制。

是否存在复制构造函数和赋值运算符需要私有(private)并同时具有有意义的实现的情况?

最佳答案

有两种情况会立即浮现在脑海中:

  1. friend :

    假设,作为您设计的一部分,您有两个高度耦合的类,其中一个需要能够复制另一个(例如,在工厂模型或类似模型中),但您不想让全世界都可以复制它。

  2. 包装器:

    假设您希望能够有条件地克隆某些元素,这取决于某些内部行为(例如,取决于某些类状态条件)——从语言的角度来看,最简洁的方法——仍然是将复制分开功能。这样可以很好地分离关注点。

关于c++ - 为什么我要将复制构造函数和赋值运算符设为私有(private)并在 C++ 中实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6815198/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com