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 サイトの他の関連記事を参照してください。