C では、静的データクラス内のメンバーは、特定の例外を除き、クラス定義内で直接初期化できません。
静的データ メンバーはプログラムのメモリ セグメントに割り当てられ、プログラムのすべてのインスタンス間で共有されます。クラス。 C 標準では、複数の翻訳単位で同じ変数が複数定義されることを防ぐために、クラス内初期化を禁止しています。
同様に、配列は連続したメモリ ブロックを占有するため、クラス内の静的配列をクラス内で初期化することはできません。クラス内初期化を許可すると、各翻訳単位で同じ配列の複数のコピーが作成され、予期しない動作が発生します。
静的 const 整数型と列挙型については、これらの規則の例外が設けられています。これらの型はコンパイル時の定数として扱われ、その値はコンパイル時に既知であるため、クラス内で初期化できます。
クラス内の静的配列を初期化するには、「列挙トリック」を使用できます:
enum { arrsize = 2 };
このアプローチでは、列挙型定数 arrsize を宣言して配列サイズを決定し、これを初期化に使用します。静的 const 配列 c.
以上がC クラスで静的メンバーと配列を直接初期化できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。