読者です 読者をやめる 読者になる 読者になる

static

C++

C言語では、static変数とかstatic関数とかを定義できた・・・。
C++では、クラスのメンバにstaticを付けて、staticメンバ変数やstaticメンバ関数を定義できる・・・。
このstaticメンバの意味は、オブジェクトではなくクラスそのもののメンバになるということ・・・。

static_var_、static_funcがstaticメンバ・・・。

staticメンバ変数のstatic_var_は、cpp側にも実体の宣言を書く必要があるので注意・・・。
それぞれ、引数をメンバ変数に格納・・・。それをstaticメンバ関数のstatic_funcと一般のメンバ関数obj_funcでやっている・・・。

obj_var_には、test_objからアクセスして5を代入・・・。
obj_funcも、test_objからアクセスして10を渡す・・・。
オブジェクトを増やせば、それだけオブジェクトごとにメンバも別々のものとなる・・・。

それに対して、static_var_は、class_testからアクセスして50を代入・・・。
static_funcも、class_testからアクセスして100を渡している・・・。
クラスそのもののメンバとしてメモリ確保され、終始1つずつしか作られない・・・。

実行すると、

$ g++ -o main main.cpp test.cpp
$ ./main
5
obj_func, 10
50
static_func, 100
$

こうなる・・・。