1. ホーム
  2. c++

[解決済み] メンバ関数内の静的変数

2022-04-15 23:05:52

質問

C++でメンバ関数内の静的変数がどのように機能するか、どなたか説明してください。

次のようなクラスがあるとする。

class A {
   void foo() {
      static int i;
      i++;
   }
}

のインスタンスを複数宣言した場合 A を呼び出すと foo() をインクリメントします。 i をすべてのインスタンスで使用しますか?それとも呼び出されたものだけ?

私は、各インスタンスにはそれぞれ i しかし、私の持っているいくつかのコードを見てみると、そうではないことがわかります。

どのように解決するのですか?

以来 class A は非テンプレートクラスであり A::foo() は非テンプレの関数です。のコピーは1つだけです。 static int i を作成します。

のインスタンスはすべて A オブジェクトは、同じ i と寿命の i は、プログラム中ずっと残ります。例を挙げますと

A o1, o2, o3;
o1.foo(); // i = 1
o2.foo(); // i = 2
o3.foo(); // i = 3
o1.foo(); // i = 4