じゅぴの記録帳

いったイベントや勉強したこと等を記録するブログです 間違ってるとこあれば指摘お願いします

記録④(シングルトン)

やっと理解したけど忘れそうなのでメモです。

シングルトンとは

Singleton パターン(シングルトン・パターン)とは、オブジェクト指向コンピュータプログラム)における、デザインパターン)の1つである。GoF) (Gang of Four; 4人のギャングたち) によって定義された。Singleton パターンとは、そのクラス)のインスタンスが1つしか生成されないことを保証するデザインパターンのことである。

引用元Singleton パターン - Wikipedia

つまり1つのクラスに1個だけしか生成できないように枷を掛けれるっぽい。

ソース

```c++ private: Singleton() {} // コンストラクタを private に置く。 Singleton(const Singleton&); // コピーコンストラクタも private に置き、定義しない。 Singleton& operator=(const Singleton&); // コピー代入演算子も private に置き、定義しない。 ~Singleton() {} // デストラクタを private に置く。 public: static Singleton& getInstance() { static Singleton inst; // private なコンストラクタを呼び出す。 return inst; }

const char* getString() const { return "Hello world!"; } }; ```

引用元Singleton パターン - Wikipedia

getinstanceでinstがあればそれを返し、なければ生成している

そもそもstaticとは

最初static忘れていたので理解できませんでした。
staticは変数等のスコープを指定して、破棄できないようにできる識別子。
ローカル変数に使えばその変数は次に呼ばれたときも値を保持している。、
クラスのメンバ変数に使えばそのクラスのものをいくつ宣言しても1つしか生成されない(すべてで共通
の変数ができる。

問題

仕様上グローバル変数のように使用できるのでとても危険らしい。 破棄タイミングも特殊っぽいので注意!

参考

C++ static 修飾子 入門 - ViVi web site