Pra*_*G N 7 c++ singleton assignment-operator
有人可以证明在Singleton类实现中需要对赋值运算符进行私有化吗?
Singleton& operator=(Singleton const&);私有化解决了什么问题?
class Singleton {
public:
static Singleton& Instance() {
static Singleton theSingleton;
return theSingleton;
}
private:
Singleton(); // ctor hidden
Singleton(Singleton const&); // copy ctor hidden
Singleton& operator=(Singleton const&); // assign op. hidden
~Singleton(); // dtor hidden
};
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 11
单身人士的分配只是一个无意义的操作,因为它只应该存在一个对象.
将赋值运算符设置为私有有助于诊断无意义的代码,例如:
Singleton& a = Singleton::Instance();
Singleton& b = Singleton::Instance();
a = b; // Oops, accidental assignment.
Run Code Online (Sandbox Code Playgroud)