Constexpr 関数と定数: どちらを使用する場合
「return 5, " なぜそのような機能が C 11 に存在するのか、定数の宣言を置き換える必要があるのか疑問に思う人もいるかもしれません。
定数と Constexpr 関数
定数値を処理する次の例を考えてみましょう。
#define MEANING_OF_LIFE 42 const int MeaningOfLife = 42; constexpr int MeaningOfLife() { return 42; }
伝統的には、単純に宣言します。定数値。ただし、constexpr 関数には特定の利点があります。
Constexpr 関数が役立つ場合
Constexpr 関数は、次のような戻り値により複雑な計算が必要な場合に役立ちます。
constexpr int MeaningOfLife(int a, int b) { return a * b; } const int meaningOfLife = MeaningOfLife(6, 7);
これにより、コンパイル時が容易になりながら、コードがより読みやすくなります。
コンパイル時の計算
Constexpr 関数により、次のような定数の明示的なコンパイル時の計算が可能になります。
template<typename Type> constexpr Type max(Type a, Type b) { return a < b ? b : a; }
これにより、次のことが可能になります。定数値を効率的に処理するため。
増加可読性
DegreesToRadians のような関数の場合、constexpr 関数を使用すると可読性が向上し、値がコンパイル時に計算されることがより明確になります。
const float oneeighty = DegreesToRadians(180.0f);
結論
定数の宣言は依然として価値のある習慣ですが、constexpr 関数には次のような利点があります。より複雑な定数値や読みやすい定数値を扱うことができます。これらはコンパイル時の評価を容易にし、コードの保守性を高めます。これらのトピックの詳細については、http://en.cppreference.com/w/cpp/ language/constexpr を参照してください。
以上がConstexpr 関数または定数: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。