static・静的メンバ関数

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

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
スポンサーリンク
 
スポンサーリンク