Constexpr-Funktionen vs. Konstanten: Wann man welche verwendet
Wenn Sie auf Funktionen stoßen, die durchweg denselben Wert zurückgeben, wie z. „Man könnte sich fragen, warum eine solche Funktion in C 11 existiert und ob sie die Deklaration von Konstanten ersetzen sollte stattdessen.
Konstanten vs. Consexpr-Funktionen
Betrachten Sie die folgenden Beispiele für den Umgang mit einem konstanten Wert:
#define MEANING_OF_LIFE 42 const int MeaningOfLife = 42; constexpr int MeaningOfLife() { return 42; }
Traditionell würde man einfach deklarieren ein konstanter Wert. Constexpr-Funktionen bieten jedoch gewisse Vorteile.
Wenn Constexpr-Funktionen nützlich sind
Constexpr-Funktionen sind wertvoll, wenn der zurückgegebene Wert komplexere Berechnungen erfordert, wie zum Beispiel:
constexpr int MeaningOfLife(int a, int b) { return a * b; } const int meaningOfLife = MeaningOfLife(6, 7);
Dies ermöglicht besser lesbaren Code und erleichtert gleichzeitig die Kompilierungszeit Auswertung.
Berechnungen zur Kompilierungszeit
Constexpr-Funktionen ermöglichen die explizite Berechnung von Konstanten zur Kompilierungszeit, wie in:
template<typename Type> constexpr Type max(Type a, Type b) { return a < b ? b : a; }
Dies ermöglicht für den effizienten Umgang mit konstanten Werten.
Erhöht Lesbarkeit
Bei Funktionen wie DegreesToRadians verbessert die Verwendung von constexpr-Funktionen die Lesbarkeit und macht deutlicher, dass der Wert zur Kompilierungszeit berechnet wird:
const float oneeighty = DegreesToRadians(180.0f);
Fazit
Während die Deklaration von Konstanten weiterhin eine wertvolle Praxis ist, bieten constexpr-Funktionen Vorteile bei der Arbeit mit komplexeren oder lesbareren konstante Werte. Sie erleichtern die Auswertung zur Kompilierzeit und verbessern die Wartbarkeit des Codes. Weitere Informationen zu diesen Themen finden Sie unter http://en.cppreference.com/w/cpp/sprache/constexpr.
Das obige ist der detaillierte Inhalt vonConsexpr-Funktionen oder -Konstanten: Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!