シングルトンクラス

ロベールのC++入門講座 11-03

シングルトンクラスというものに関して言及がありました。

コンストラクタをprivateにすることで外部でインスタンス化を不可能にし、そのクラスのオブジェクトが必ず一つしか存在しないことを保証するクラスのことをシングルトンクラスというようです。

ただ、ロベール本には実際のコードが書いてなかったので、自分で考えながら実装してみました。

#include <iostream>
#include <string>
using std::cout; using std::endl;

class CSample {
public:
    static const CSample* getObject () {
        static CSample obj;
        return &obj;
    }
private:
    CSample() {};
};

int main () {
    const CSample* obj1 = CSample::getObject();
    const CSample* obj2 = CSample::getObject();
    
    cout << obj1 << endl;
    cout << obj2 << endl;
    
    return 0;
}
$ main
00421760
00421760

アドレスが一致しているので同じオブジェクトが返ってるのがわかります。

実際にどういう時に使うんでしょうね、このクラス。