クラスのメンバ変数をstatic, const, あるいはその両方で宣言する
staticメンバ変数
クラスのメンバ変数で、値をオブジェクトごとに持つのではなく、すべてのオブジェクトで同じ変数を参照したい場合は、staticをつけて宣言する。
// sample.h class Sample { public: Sample (); ~Sample (); private: static int _staticVar; };
staticメンバ変数の初期化は、下のように実装ファイルで定義をかく。(処理系によって若干解釈が違うといううわさも)
// sample.cpp #include "sample.h" int Sample::_staticVar = 0; // 初期化
constメンバ変数
クラスのメンバ変数の値を、オブジェクト作成後に変更できなくするにはconstをつけて宣言する。
// sample.h class Sample { public: Sample (); Sample (const int foo); ~Sample (); private: const int _constVar; };
constメンバ変数の初期化は、コンストラクタに初期化リストをつけてやれば初期化できる。
// sample.cpp #include "sample.h" Sample::Sample () : _constVar (0) { // 初期化処理... } // 引数で初期化も可能。 Sample::Sample (const int foo) : _constVar (foo) { // 初期化処理... }
static constメンバ変数
その両方の場合は?...初期化の方法はひとつ。
// sample.h class Sample { public: Sample (); ~Sample (); private: static const int _staticConstVar; };
// sample.cpp #include "sample.h" const int Sample::_staticConstVar = 0; // 初期化
トラックバック
- このエントリーにトラックバック:
- http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/277
コメント
「static const の初期化 cpp」でググってやってきました。すっかり忘れてましたので、助かりました。
お役に立てたようで何よりです。
私も時々分からなくなって、自分で自分のブログを検索したりしてます 笑。
こんにちは、またブログ覗かせていただきました。また、遊びに来ま~す。よろしくお願いします
こんにちわ、
16年後の私を助けてくれてありがとうございました。
static const の方法がわかりました!!
こんにちわ
え、俺去年書き込んでるやん orz また遊びに来ちゃいました。精進しませんねぇ(笑)
pythonの割合が増えると、ふとこういうところで「なんやったっけ?」ってなります。
お世話になりました~^^