ホームページ > バックエンド開発 > C++ > メンバー関数の静的変数はクラス インスタンス間で値を共有しますか?

メンバー関数の静的変数はクラス インスタンス間で値を共有しますか?

DDD
リリース: 2024-11-09 17:01:02
オリジナル
202 人が閲覧しました

Do Static Variables in Member Functions Share Values Across Class Instances?

メンバー関数の静的変数: 共有またはインスタンス固有?

メンバー関数内の静的変数は、C で独自の動作を持ちます。以下のクラス定義を考えてみましょう:

class A {
   void foo() {
      static int i;
      i++;
   }
};
ログイン後にコピー

疑問が生じます: クラス A の複数のインスタンスが作成された場合、1 つのインスタンスで foo() を呼び出すと、すべてのインスタンスの静的変数 i が変更されますか?

インスタンスごとに個別の i コピーが期待されるのに反して、メンバー関数の静的変数は異なる動作をします。指定された例では、静的変数 i のコピーはプログラム全体内に 1 つだけ存在します。

クラス A のインスタンスはすべて、同じ i 変数に影響を与え、その変数はプログラムの存続期間全体にわたって存続します。説明すると、

A o1, o2, o3;
o1.foo(); // i = 1
o2.foo(); // i = 2
o3.foo(); // i = 3
o1.foo(); // i = 4
ログイン後にコピー

したがって、クラス A のインスタンスに対して foo() を呼び出すたびに、共有変数 i がインクリメントされます。これらの静的変数は、クラスのすべてのインスタンス間でデータを共有するメカニズムを提供します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート