Mer*_*kiz 4 c++ singleton operator-overloading copy-constructor
我在网上找到了这个单例设计模式的代码:
class Foo
{
public:
static Foo& getInstance()
{
static Foo instance;
return instance;
}
private:
Foo() {};
Foo(Foo const&);
Foo& operator=(Foo const&);
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么构造函数Foo(Foo const&);和Foo& operator=(Foo const&);都需要.有人可以向我解释一下吗?
您不希望以下代码失败吗?
int main() {
// Utilizes the copy constructor
Foo x = Foo::getInstance();
Foo y = Foo::getInstance();
// Utilizes the operator=
x = Foo::getInstance();
}
Run Code Online (Sandbox Code Playgroud)
请注意,我们在Foo该代码的末尾创建了3个新实例.