C ++ verschiedene Singleton-Implementierungen

Normalerweise implementiere ich das Singleton-Muster folgendermaßen:

class Singleton
{
    public:
        virtual ~Singleton() {}

        static Singleton& GetInstance()
        {
            static Singleton instance;
            return instance;
        }

    private:
        Singleton();
        Singleton(const Singleton&);
        Singleton& operator=(const Singleton&);
}

Kürzlich bin ich auf diese etwas andere Implementierung gestoßen:

class Singleton
{
    public:
        Singleton();
        virtual ~Singleton() {}

        static Singleton& GetInstance()
        {
            return instance;
        }

    private:
        Singleton(const Singleton&);
        Singleton& operator=(const Singleton&);

        static Singleton instance;
}

Singleton Singleton::instance;

Welche Implementierung ist besser?

Ist es nicht gefährlich, den Konstruktor nicht privat zu machen (2. Implementierung)?

Vielen Dank.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage