静的データ メンバーの外部定義に当惑していますか?謎の解明
IBM の C ナレッジ センターによると、クラス宣言の外で静的データ メンバーを定義することが必須です。これにより、次のような疑問が生じます: なぜこれが必要なのか、そしてこのルールを決定する基礎となるメモリ割り当て原則は何ですか?
これに対処するには、One Definition Rule として知られる概念を詳しく掘り下げる必要があります。 C では、プログラム内の各静的オブジェクトは、一度だけ正確に定義する必要があります。クラス定義は多くの場合、ヘッダー ファイルに含まれ、さらに複数の翻訳単位に組み込まれます。
ヘッダー内の静的オブジェクトの宣言がその定義でもある場合、ヘッダー ファイルにインクルードされるたびに複数の定義が発生します。これは 1 つの定義ルールに違反し、破損の可能性があります。
したがって、静的オブジェクトはヘッダー内で定義されません。代わりに、外部の単一の定義がコードベースの別の場所に提供されます。
理論的には、この言語はインライン関数の処理をエミュレートし、複数の定義を 1 つにマージできます。ただし、C 言語はこのアプローチを採用していないため、静的データ メンバーの外部定義ルールに準拠する必要があります。
以上がC の静的データ メンバーをクラス宣言の外で定義する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。