あなたは、クラスAとクラスBを持っている場合は
struct A {
int x = 0;
void inc() { x+=10; }
};
struct B {
static int x;
void inc() { x+=10; }
};
int B::x = 0;
int main() {
A a1;
a1.inc();
std::cout << a1.x << '\n';
A a2;
a2.inc();
std::cout << a2.x << '\n';
B b1;
b1.inc();
std::cout << b1.x << '\n';
B b2;
b2.inc();
std::cout << b2.x << '\n';
}
出力:class A
メンバ変数x
のインスタンスの場合
10
10
10
20
が共有されていません。したがって、それぞれのインクリメントの後にa1.x
およびa2.x
は両方とも10
です。 class B
キーワードstatic
ためしかし
は、すべてのインスタンス間で共有されて
クラス変数として
x
を宣言します。それで、これまでのようなインスタンスのインクリメントは常にクラスメンバーをインクリメントします。
b1.inc()
による最初のインクリメント後、
B::x
の値は
10
であり、
b2.inc()
による2番目のインクリメントの後の値は
20
です。
関連コード、好ましくは[mcve]を記入してください。 –