C での静的メンバー変数の初期化
オブジェクト指向プログラミング (OOP) では、クラス内にメンバー変数を含めるのが一般的です。ただし、C の静的メンバー変数は、クラス定義の外で初期化されるという点で、非静的メンバー変数とは異なります。これにより、次のような疑問が生じます。なぜそうなるのか?
論理制約
struct Gizmo { static string name = "Foo"; };
この例では、ヘッダー ファイルを含むすべての翻訳単位で名前が定義され、ルールに違反します。
歴史的観点
開発者の中には、クラス内での初期化の方が直感的で混乱が少ないと主張する人もいます。ただし、C 標準では、次の理由によりこの動作が変更されていません。
結論
静的メンバーの外部初期化の要件C の変数は、論理的な制約と歴史的考慮事項によって決まります。この標準では、初期化を 1 つの変換単位に集中化することで、一貫性、1 定義ルールの順守、既存の C コードとの下位互換性が確保されています。
以上がC の静的メンバー変数がクラス定義の外で初期化されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。