static・静的メンバ関数

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

static・静的メンバ変数で、メンバ変数をオブジェクトではなく、クラスに属するようにする方法を見ました。
メンバ関数についても、static宣言が可能であり、非静的データを使用しない関数は、静的メンバ関数として定義したほうが効率的です。

#include <iostream>
 
class obj_count {
    private:
        static int count;    // 生成されたオブジェクトの数
    
    public:
        // インクリメント
        obj_count() {
            ++count;
        }
        // デクリメント
        ~obj_count() {
            --count;
        }
        // count数を表示。静的メンバ関数。
        static void display() {
            std::cout << count << "\n";
        }
};
 
// 静的メンバ変数countの初期化
int obj_count::count = 0;
 
int main() {
    obj_count a_obj;
    obj_count::display();    // オブジェクトのカウント数
 
    obj_count b_obj;
    obj_count::display();    // オブジェクトのカウント数。
 
    obj_count c_obj;
    obj_count::display();    // オブジェクトのカウント数。
 
    return 0;
}
 

注意点。

1.static void display()でのクラス内での静的メンバ関数宣言。
2.obj_count::display()での、静的メンバ関数の呼び出し。

実行結果。

1
2
3

日時: 2008年06月09日 16:24
コメントを投稿






トラックバック

■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/248

この記事にトラックバックされる方は、参照先が分かるようにするために、「static・静的メンバ関数」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。






あわせて読みたいブログパーツ
フィードメーター - C言語とC++勉強ルーム