单例实现 - 为什么需要复制构造函数?

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&);都需要.有人可以向我解释一下吗?

Bil*_*nch 7

您不希望以下代码失败吗?

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个新实例.