ホームページ > バックエンド開発 > C++ > C で静的メンバーを適切に初期化するにはどうすればよいですか?

C で静的メンバーを適切に初期化するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-14 05:51:10
オリジナル
188 人が閲覧しました

How Can I Properly Initialize Static Members in C  ?

C での静的メンバーの初期化

C では、クラス定義内での静的メンバーの定義は混乱を招く可能性があります。この記事では、C の静的変数の初期化に関する質問に対処し、クラス内初期化が禁止されている理由と、それらを適切に初期化する方法を探ります。

1.クラス内初期化の禁止

クラス宣言内で public static 変数を定義しようとすると、以下に示すようにコンパイル エラーが発生することがあります。

public:
static int j = 0;
ログイン後にコピー

これは、 C 標準では、エラー メッセージに記載されているように、クラス宣言内で非 const 静的メンバーの初期化を禁止しています。「ISO C では、非 const のクラス内初期化が禁止されています」静的メンバー 'j'."

2. Const メンバーの許容される初期化

非 const 静的メンバーとは対照的に、const 静的メンバーはクラス宣言内で初期化できます。 const メンバーはコンパイル時の定数とみなされ、コンパイル時に既知の値で初期化する必要があるため、これが許可されます。

3. C での静的変数の初期化

C では、静的変数は C の場合と同様に自動的にゼロに初期化されません。 C で静的変数を初期化するには、クラスの外で初期値を明示的に定義する必要があります。通常、別のソース ファイル (.cpp) で宣言します。

たとえば、上で宣言した静的変数 j を初期化するには、次のように変更します。コードは次のとおりです。

// Header file
class Test {
public:
    static int j;
};

// Source file
int Test::j = 0;
ログイン後にコピー

結論

C では、初期化に柔軟性が必要なため、非 const 静的メンバーのクラス内初期化は禁止されています。クラス宣言外の静的変数。ただし、const 静的メンバーはクラス宣言で初期化できます。 C では、静的変数は自動的にゼロに初期化されません。初期値は明示的に定義する必要があります。

以上がC で静的メンバーを適切に初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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