如何在C++中创建只有一个实例的类

Ken*_*rou 2 c++ class

有没有办法在 C++ 中只允许一个类的一个实例?如果有,请向我解释。谢谢你。

bgo*_*dst 5

这是单例模式。您可以通过公共静态属性和私有构造函数来实现这一点:

class Singleton {
    public:
        static Singleton * const singleton;
    private:
        Singleton(void) {}
};
Singleton * const Singleton::singleton = new Singleton();
Run Code Online (Sandbox Code Playgroud)

编辑: Dan Watkins 的好点子;如果你真的想对它严格一点,你可以通过显式声明这些方法私有来禁止复制和赋值:

    private:
        Singleton(void) {}
        Singleton(Singleton& other) {}
        Singleton& operator=(Singleton& other) {}
Run Code Online (Sandbox Code Playgroud)

  • 太复杂。并且没有办法清理它。此外,它可以被复制。考虑一个 `public static` 函数返回对 `static` 实例的引用(优点:按需构造),或者只是一个 `public static` 成员。并且不要忘记禁用复制。 (4认同)