ホームページ >バックエンド開発 >C++ >メンバー関数の静的変数は、クラスの異なるインスタンス間でどのように動作しますか?

メンバー関数の静的変数は、クラスの異なるインスタンス間でどのように動作しますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-09 09:06:01876ブラウズ

How do static variables in member functions behave across different instances of a class?

メンバー関数の静的変数

次のクラスを考えてみましょう。

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

C のメンバー関数内で静的変数を扱う場合、次のようになります。インスタンス間でインスタンスがどのように動作するかを理解することが重要です。

複数のインスタンスと静的変数

各インスタンスが静的変数の独自のコピーを所有するという想定に反して、この特定のシナリオでは、プログラム全体内に static int i のコピーが 1 つだけ存在します。これは、クラス A が非テンプレート クラスであり、A::foo() が非テンプレート関数であるためです。

静的変数に対するインスタンスの影響

関係なくA のどのインスタンスが foo() メソッドを呼び出すかによって、共有静的変数 i が影響を受けます。たとえば、次のように A の複数のインスタンスを宣言した場合:

A o1, o2, o3;

これらのインスタンスのいずれかで foo() を呼び出すと、変数 i がインクリメントされます:

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

結論としては、staticメンバー関数の変数はクラスのすべてのインスタンス間で共有されるため、どのインスタンスでも同じ値にアクセスして変更できます。

以上がメンバー関数の静的変数は、クラスの異なるインスタンス間でどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。