Raj*_*pal 5 c++ design-patterns
我知道为什么要使默认构造函数和复制构造函数私有在C++中实现singleton类.但我不明白的是,为什么复制赋值运算符是私有的,因为不会有两个现有的对象开始.
我的探索带来两点:
根据Alexandrescu在"现代C++设计"中的说法,赋值运算符是私有的,以防止自我赋值.
其次,根据三条规则,如果你为一个类定义一个ctor,copy ctor和assignment操作符,你应该明确定义所有三个.那么,这只是遵循这条规则的问题.
那么,你对此有何看法?
不。
在单例中,您想要管理所有可能的构造、分配和销毁。通过进行所有这些操作,private您实际上只是阻止其他人使用它们。
另请注意,通常会声明复制构造和复制赋值private以防止从外部调用,但不会定义它们,因为它们在实践中并未使用......因此,如果它们是链接器会抱怨。
在 C++11 中,您可以将复制构造和复制赋值声明为deleted。