シングルトンクラス
ロベールの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
アドレスが一致しているので同じオブジェクトが返ってるのがわかります。
実際にどういう時に使うんでしょうね、このクラス。