「C++/初期化用クラス」の編集履歴(バックアップ)一覧はこちら
「C++/初期化用クラス」(2008/10/22 (水) 15:18:13) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
** 初期化用クラス
プログラムの起動時と終了時に"一度だけ"初期化、終了処理をするためのクラス。~
winsockを使うときなどに。
#codehighlight(C++){{
// initializer.h
#ifndef _INITIALIZER_H
#define _INITIALIZER_H
namespace initializer {
class initializer {
private:
class do_init {
private:
do_init() {
// 初期化処理をここに
}
~do_init() {
// 終了処理をここに
}
public:
static void instance() {
static do_init p;
}
};
public:
initializer() {
do_init::instance();
}
~initializer() {}
};
static initializer initializer_;
} // namespace
#endif
}}
このヘッダファイルを複数のソースファイルからインクルードしても
1回しかdo_init()のコンストラクタ、デストラクタは呼び出されない。~
マルチスレッド環境ではこれは保証できないけどプログラムの起動時は大抵シングルスレッドだろう。~
消費メモリは 1(static do_init) + 1(static initializer) * n(インクルード回数) かな。
表示オプション
横に並べて表示:
変化行の前後のみ表示: