目次
静的データ メンバーの初期化と定義
イニシャライザと定義
非静的データ メンバー
静的データ メンバーの定義
クラス外の定義
外部変数との類似
ホームページ バックエンド開発 C++ クラス定義の外で静的データ メンバーを初期化する方法と理由

クラス定義の外で静的データ メンバーを初期化する方法と理由

Nov 06, 2024 am 07:30 AM

How and Why Do We Initialize Static Data Members Outside the Class Definition?

静的データ メンバーの初期化と定義

提供されたコード内の変数 "i" などの静的データ メンバーは、初期化中に特別な処理を必要とします。値を割り当てるイニシャライザと、変数の存在を宣言する定義の違いを理解することが重要です。

イニシャライザと定義

コード例では、静的データメンバー "i" はクラス定義の外で初期化されます。定義では変数のメモリ内のアドレスを提供する必要があり、クラス定義自体では決定できないため、これが必須です。

一方、イニシャライザは、変数を指定せずに単に変数に値を代入します。住所。これにより、初期値を 1 か所で設定する簡潔な方法が可能になり、コンストラクター内で初期値を繰り返す必要がなくなります。

非静的データ メンバー

「normalValue」などの非静的データ メンバーこの例では、クラスのインスタンス内に存在します。それらのアドレスは、それらが属するインスタンスによって異なります。したがって、非静的データ メンバー定義は、インスタンスの作成時に作成されます。

静的データ メンバーの定義

対照的に、静的データ メンバーは固定アドレスを持ち、どのインスタンスからも独立して存在します。一意のアドレスを確実に取得するために、リンカーは静的データ メンバーごとに 1 つの定義を必要とします。通常、クラス定義は複数のオブジェクト ファイルに含まれるため、クラス内で静的データ メンバーを定義すると、この要件に違反します。

クラス外の定義

この問題を解決するには、静的データ メンバーの定義を次のようにする必要があります。クラス宣言の外に置かれます。これにより、それらが単一のオブジェクト ファイルに表示されるようになり、リンカが適切なアドレスを割り当てることができるようになります。

外部変数との類似

クラスの外で静的データ メンバーを定義する概念は、宣言することに似ています。外部変数。 extern 宣言は、変数がプログラム内の別の場所で定義されていることを示します。同様に、クラス定義内の静的データ メンバー宣言は、実際の定義が別途提供される extern 宣言として見ることができます。

以上がクラス定義の外で静的データ メンバーを初期化する方法と理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? Mar 03, 2025 pm 05:52 PM

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

GULC:Cライブラリはゼロから構築されています GULC:Cライブラリはゼロから構築されています Mar 03, 2025 pm 05:46 PM

GULC:Cライブラリはゼロから構築されています

c言語関数形式文字ケース変換手順 c言語関数形式文字ケース変換手順 Mar 03, 2025 pm 05:53 PM

c言語関数形式文字ケース変換手順

C言語関数の定義と呼び出しルールは何ですか、そして C言語関数の定義と呼び出しルールは何ですか、そして Mar 03, 2025 pm 05:53 PM

C言語関数の定義と呼び出しルールは何ですか、そして

メモリに保存されているC言語関数の返品値はどこにありますか? メモリに保存されているC言語関数の返品値はどこにありますか? Mar 03, 2025 pm 05:51 PM

メモリに保存されているC言語関数の返品値はどこにありますか?

明確な使用法とフレーズ共有 明確な使用法とフレーズ共有 Mar 03, 2025 pm 05:51 PM

明確な使用法とフレーズ共有

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? Mar 12, 2025 pm 04:52 PM

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?

C標準テンプレートライブラリ(STL)はどのように機能しますか? C標準テンプレートライブラリ(STL)はどのように機能しますか? Mar 12, 2025 pm 04:50 PM

C標準テンプレートライブラリ(STL)はどのように機能しますか?

See all articles