私は通常、この方法でシングルトン パターンを実装します。
class Singleton
{
public:
virtual ~Singleton() {}
static Singleton& GetInstance()
{
static Singleton instance;
return instance;
}
private:
Singleton();
Singleton(const Singleton&);
Singleton& operator=(const Singleton&);
}
最近、私はこの実装に出くわしましたが、これは少し異なります:
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;
どちらの実装が優れていますか?
コンストラクタをprivateにしないと危ないのではないか(実装2回目)?
ありがとう。