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 $
こうなる・・・。