je mets en œuvre habituellement le singleton C++ ainsi:différentes implémentations singleton
class Singleton
{
public:
virtual ~Singleton() {}
static Singleton& GetInstance()
{
static Singleton instance;
return instance;
}
private:
Singleton();
Singleton(const Singleton&);
Singleton& operator=(const Singleton&);
}
Récemment, je suis tombé sur cette mise en œuvre, ce qui est légèrement différente:
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;
Quelle mise en œuvre est mieux?
N'est-il pas dangereux de ne pas rendre le constructeur privé (2ème implémentation)?
Merci.