C での静的メンバーの初期化
C では、クラス定義内での静的メンバーの定義は混乱を招く可能性があります。この記事では、C の静的変数の初期化に関する質問に対処し、クラス内初期化が禁止されている理由と、それらを適切に初期化する方法を探ります。
1.クラス内初期化の禁止
クラス宣言内で public static 変数を定義しようとすると、以下に示すようにコンパイル エラーが発生することがあります。
public: static int j = 0;
これは、 C 標準では、エラー メッセージに記載されているように、クラス宣言内で非 const 静的メンバーの初期化を禁止しています。「ISO C では、非 const のクラス内初期化が禁止されています」静的メンバー 'j'."
2. Const メンバーの許容される初期化
非 const 静的メンバーとは対照的に、const 静的メンバーはクラス宣言内で初期化できます。 const メンバーはコンパイル時の定数とみなされ、コンパイル時に既知の値で初期化する必要があるため、これが許可されます。
3. C での静的変数の初期化
C では、静的変数は C の場合と同様に自動的にゼロに初期化されません。 C で静的変数を初期化するには、クラスの外で初期値を明示的に定義する必要があります。通常、別のソース ファイル (.cpp) で宣言します。
たとえば、上で宣言した静的変数 j を初期化するには、次のように変更します。コードは次のとおりです。
// Header file class Test { public: static int j; }; // Source file int Test::j = 0;
結論
C では、初期化に柔軟性が必要なため、非 const 静的メンバーのクラス内初期化は禁止されています。クラス宣言外の静的変数。ただし、const 静的メンバーはクラス宣言で初期化できます。 C では、静的変数は自動的にゼロに初期化されません。初期値は明示的に定義する必要があります。
以上がC で静的メンバーを適切に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。