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
■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/248