ヘッダー ファイル内の静的グローバル変数と静的データ メンバーを区別する
C では、ヘッダー ファイルで宣言された静的変数は、定義されている静的変数と大きな違いを示します。クラス内。
の静的グローバル変数ヘッダー ファイル
一般的な考えに反して、ヘッダー ファイル内の静的変数には独自のスコープがありません。これらはヘッダーを参照する各ソース ファイルに含まれており、それぞれの翻訳単位に関連付けられた複数のインスタンスが作成されます。したがって、その有効範囲は、それらが使用される翻訳単位に制限されます。
クラス内の静的データ メンバー
対照的に、クラス内で宣言された静的データ メンバーは、クラス間で共有されます。クラスのすべてのインスタンス。この特性は内部リンケージの概念に由来しています。クラスのすべてのオブジェクトは、静的データ メンバーの同じ値にアクセスします。静的データ メンバーの初期化は、通常、クラス定義を含む .cpp ファイル内で行われます。
キーの違い
この違いは、ヘッダー ファイルに static が含まれるという事実にあります。 context は内部リンケージを示しますが、クラス内の static はクラスのすべてのインスタンスの共有メンバー変数を示します。 class.
影響
ヘッダー ファイルで静的変数を宣言すると、値が競合する複数のインスタンスが生成される可能性があるため、多くの場合望ましくありません。 C で内部リンクを実現するには、ヘッダー ファイルの静的グローバル変数に依存するのではなく、匿名名前空間を使用することをお勧めします。
以上がC ヘッダー ファイルの静的グローバル変数と静的データ メンバーの主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。