在设计Singleton模式时是否需要使赋值运算符保持私有

时间:2016-08-24 16:25:47

标签: c++ design-patterns singleton

我刚刚了解了我职业生涯中的第一个设计模式:) 并使用早期和懒惰方法实现它。虽然它是逻辑的 使复制构造函数私有但我被告知也使赋值运算符私有。由于只能创建一个实例,我认为它不会 将Assignment运算符声明为private是有意义的。

2 个答案:

答案 0 :(得分:0)

  

由于只能创建一个实例,我认为将Assignment操作符声明为private是没有意义的。

完全声明Assignment运算符是没有意义的。无论如何你是对的。 publicprivate它确实有所不同,因为它永远不会被使用。

出于这些原因,最实际的选择是避免定义它,并确保无法调用它: C ++ 11 引入了{{3功能。

所以,你可以删除它。

Singleton& operator=(const Singleton&) = delete;

答案 1 :(得分:-1)

他们可能指的是执行复制的赋值运算符:

Singleton& operator=(const Singleton& other);

这意味着Singleton的多个实例,因为你需要另一个实例('其他')来复制到Singleton实例中,这是没有意义的。因此,您可以将其设为私有或将其标记为已删除。