ホームページ > バックエンド開発 > C++ > C の静的データ メンバーをクラス宣言の外で定義する必要があるのはなぜですか?

C の静的データ メンバーをクラス宣言の外で定義する必要があるのはなぜですか?

Barbara Streisand
リリース: 2024-12-09 12:44:12
オリジナル
394 人が閲覧しました

Why Must Static Data Members in C   Be Defined Outside the Class Declaration?

静的データ メンバーの外部定義に当惑していますか?謎の解明

IBM の C ナレッジ センターによると、クラス宣言の外で静的データ メンバーを定義することが必須です。これにより、次のような疑問が生じます: なぜこれが必要なのか、そしてこのルールを決定する基礎となるメモリ割り当て原則は何ですか?

これに対処するには、One Definition Rule として知られる概念を詳しく掘り下げる必要があります。 C では、プログラム内の各静的オブジェクトは、一度だけ正確に定義する必要があります。クラス定義は多くの場合、ヘッダー ファイルに含まれ、さらに複数の翻訳単位に組み込まれます。

ヘッダー内の静的オブジェクトの宣言がその定義でもある場合、ヘッダー ファイルにインクルードされるたびに複数の定義が発生します。これは 1 つの定義ルールに違反し、破損の可能性があります。

したがって、静的オブジェクトはヘッダー内で定義されません。代わりに、外部の単一の定義がコードベースの別の場所に提供されます。

理論的には、この言語はインライン関数の処理をエミュレートし、複数の定義を 1 つにマージできます。ただし、C 言語はこのアプローチを採用していないため、静的データ メンバーの外部定義ルールに準拠する必要があります。

以上がC の静的データ メンバーをクラス宣言の外で定義する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート