C では、非整数を持つクラスの静的 const メンバーを宣言できません。タイプ。この制限は、C 言語の静的 const データ メンバー メカニズムの特定の設計により発生します。
静的 const 整数データ メンバーは通常、コード セグメント (または読み取り専用データ セグメント) に格納され、コード セグメントなしで使用できます。メモリの割り当て。ただし、double のような非整数型の場合、コンパイラは通常、初期化されたデータ セグメントに値を格納します。
このアプローチにより、整数型が使用される場所に直接インライン化されるため、整数型を効率的に最適化できます。ただし、非整数型の場合、コンパイラは値をインライン化するかどうかを保証できません。この不確実性により、コンパイラが特定のインスタンスでは値をインライン化するが他のインスタンスではインライン化しないと決定した場合、微妙な実行時エラーが発生する可能性があります。
この問題に対処するために、C 設計者は、静的 const メンバーが次のインスタンスのみに存在できるようにする制限を組み込みました。整数型の。このようにして、プログラマーは、整数の const メンバーが常にインライン化されていることを確信でき、信頼性の高いパフォーマンスが可能になり、潜在的な実行時の問題を回避できます。
解決策として、必要な値を返すクラス内で非静的関数を宣言できます。 「Now_Good」の例で行ったように、値を設定します。このアプローチでは、静的 const メンバーの言語設計に準拠しながら、定数の機能が提供されます。
以上がC クラスに非整数の静的 Const メンバーを含めることができないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。