我刚刚了解了我职业生涯中的第一个设计模式:) 并使用早期和懒惰方法实现它。虽然它是逻辑的 使复制构造函数私有但我被告知也使赋值运算符私有。由于只能创建一个实例,我认为它不会 将Assignment运算符声明为private是有意义的。
答案 0 :(得分:0)
由于只能创建一个实例,我认为将Assignment操作符声明为private是没有意义的。
完全声明Assignment运算符是没有意义的。无论如何你是对的。 public
或private
它确实有所不同,因为它永远不会被使用。
出于这些原因,最实际的选择是避免定义它,并确保无法调用它: C ++ 11 引入了{{3功能。
所以,你可以删除它。
Singleton& operator=(const Singleton&) = delete;
答案 1 :(得分:-1)
他们可能指的是执行复制的赋值运算符:
Singleton& operator=(const Singleton& other);
这意味着Singleton的多个实例,因为你需要另一个实例('其他')来复制到Singleton实例中,这是没有意义的。因此,您可以将其设为私有或将其标记为已删除。