C ++ diferentes implementaciones singleton
Usualmente implemento el patrón singleton de esta manera:
class Singleton
{
public:
virtual ~Singleton() {}
static Singleton& GetInstance()
{
static Singleton instance;
return instance;
}
private:
Singleton();
Singleton(const Singleton&);
Singleton& operator=(const Singleton&);
}
Recientemente, me encontré con esta implementación, que es ligeramente diferente:
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;
¿Qué implementación es mejor?
¿No es peligroso no hacer que el constructor sea privado (segunda implementación)?
Gracias.