ホームページ >バックエンド開発 >C++ >C のメンバー関数内で静的変数はどのように動作しますか?

C のメンバー関数内で静的変数はどのように動作しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-07 21:45:03722ブラウズ

How Do Static Variables Behave within Member Functions in C  ?

C のメンバー関数内の静的変数

C では、メンバー関数に静的変数を含めることができます。クラス内の静的メンバー変数は、関数が呼び出されるオブジェクトに関係なく、クラスのすべてのインスタンス間で共有されます。

次のクラスについて考えてみましょう:

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

A の各インスタンスが i の独自のコピーを持つと仮定すると、プログラム全体で i のインスタンスは 1 つだけになることに注意することが重要です。これは、static int i がクラス定義内および特定の関数の外で宣言され、foo 関数のローカル変数ではなくクラス自体のメンバーになるためです。

したがって、A オブジェクトのインスタンスはすべては同じ共有 i に影響を与え、その有効期間はプログラムの実行中持続します。例:

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

このシナリオでは、A のすべてのインスタンスが同じ静的変数 i にアクセスし、変更します。任意のインスタンスで foo を呼び出すと、クラス全体の共有 i が増加します。

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

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