ホームページ >バックエンド開発 >C++ >C クラス内で非 Const 静的メンバーを初期化できないのはなぜですか?

C クラス内で非 Const 静的メンバーを初期化できないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-12 16:19:11729ブラウズ

Why Can't I Initialize Non-Const Static Members Inside a C   Class?

C での静的メンバーのクラス内初期化

C では、クラス宣言内で静的メンバー変数を定義することは許可されていません。このアクションにより、コンパイル エラー「ISO C は非定数静的メンバー `j' のクラス内初期化を禁止します。

禁止の理由:

  • コードの効率: クラス宣言で静的メンバーを初期化すると、次の場合に定義が重複する可能性があります。クラスは複数のコンパイル単位に含まれています。
  • 初期化の制御: 静的メンバーは多くの場合、特定の初期化ロジックを必要としますが、クラス宣言でインラインで初期化される場合は保証できません。

Const メンバーの例外:

Const静的メンバーは初期化後に変更されないため、クラス宣言で初期化できます。これにより、コードの効率が確保され、明示的な初期化の必要がなくなります。

標準値の影響:

C では、静的変数は明示的に初期化されない場合、自動的に 0 に初期化されます。初期化された。ただし、C では、静的変数は自動的に初期化されません。クラス宣言 (const メンバーの場合) または別の .cpp ファイルで手動で初期化する必要があります。

解決策:

非 const static を定義するにはC のメンバー変数を使用する場合は、クラス宣言ではなく別の .cpp ファイルで初期化する必要があります。

の場合例:

以上がC クラス内で非 Const 静的メンバーを初期化できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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