I usually implement a singleton pattern this way:
class Singleton { public: virtual ~Singleton() {} static Singleton& GetInstance() { static Singleton instance; return instance; } private: Singleton(); Singleton(const Singleton&); Singleton& operator=(const Singleton&); }
I recently came across this implementation, which is slightly different:
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;
Which implementation is better?
Isn't it dangerous to make the constructor private (2nd implementation)?
Thanks.
c ++ design-patterns static singleton lazy-initialization
codeJack
source share