constexpr und Compile-Zeit
Werte zur Compile-Zeit berechnen
constexpr und Compile-Zeit ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Was constexpr bedeutet
constexpr teilt dem Compiler mit, dass ein Wert oder eine Funktion zur Compilezeit ausgewertet werden kann, sodass eine echte Compilezeitkonstante entsteht.
#include <iostream>
int main() {
constexpr int size = 4 * 4; // computed at compile time
int arr[size];
std::cout << sizeof(arr) / sizeof(int) << "\n";
}constexpr-Funktionen
Eine constexpr-Funktion kann bei konstanten Argumenten zur Compilezeit ausgeführt werden und ansonsten zur Laufzeit.
#include <iostream>
constexpr int square(int x) { return x * x; }
int main() {
constexpr int s = square(5); // compile time
int n = 6;
std::cout << s << " " << square(n) << "\n"; // second at runtime
}Compilezeitkonstanten in Arrays
Da constexpr-Werte zur Compilezeit bekannt sind, können sie die Größe von Arrays bestimmen und als Templateargumente dienen.
constexpr vs. const
const bedeutet „kann nicht geändert werden“, constexpr bedeutet „ist zur Compilezeit bekannt“. Jede constexpr-Variable ist implizit const, aber nicht jede const-Variable ist constexpr.
#include <iostream>
int main() {
int x;
std::cin >> x;
const int a = x; // const but runtime value
constexpr int b = 10; // compile-time constant
std::cout << b << "\n";
}Rekursives constexpr
constexpr-Funktionen dürfen sich selbst aufrufen. Dadurch kann der Compiler beispielsweise Fakultäten berechnen, bevor das Programm ausgeführt wird.
#include <iostream>
constexpr long factorial(int n) {
return n <= 1 ? 1 : n * factorial(n - 1);
}
int main() {
constexpr long f = factorial(5); // 120 at compile time
std::cout << f << "\n";
}Umfangreicheres constexpr im modernen C++
Seit C++14 dürfen constexpr-Funktionen Schleifen, lokale Variablen und Verzweigungen enthalten. Dadurch können Sie komplexe Konstanten zur Compilezeit berechnen.
#include <iostream>
constexpr int sumTo(int n) {
int total = 0;
for (int i = 1; i <= n; ++i) total += i;
return total;
}
int main() {
constexpr int s = sumTo(100);
std::cout << s << "\n";
}constexpr-Variablen müssen zur Compilezeit initialisiert werden
Eine als constexpr deklarierte Variable muss einen Initialisierer besitzen, der zur Compilezeit ausgewertet werden kann. Andernfalls lässt sich das Programm nicht kompilieren.
Vorteile der Berechnung zur Compilezeit
Die Berechnung zur Compilezeit bedeutet keine Laufzeitkosten, die Verwendung der Werte in Konstantenkontexten und eine frühere Erkennung von Fehlern.
constexpr und Templates
constexpr-Werte eignen sich besonders gut für Templates und std::array, bei denen Größen und Parameter Compilezeitkonstanten sein müssen.
Wann auf die Laufzeit zurückgefallen wird
Wenn eine constexpr-Funktion nicht konstante Argumente erhält, wird sie einfach wie eine normale Funktion zur Laufzeit ausgeführt – es tritt kein Fehler auf.
Für Konstanten constexpr bevorzugen
Verwenden Sie constexpr für echte Konstanten, etwa Größen, mathematische Werte oder Nachschlagetabellen. Es ist ausdrucksstärker als const und ermöglicht Garantien zur Compilezeit.
Kurzer Test
Testen Sie Ihr Verständnis von constexpr.
Zusammenfassung
Sie haben gelernt, dass constexpr die Auswertung von Variablen und Funktionen zur Compilezeit ermöglicht und sich von const unterscheidet, das lediglich Änderungen verbietet. Modernes C++ unterstützt dabei Schleifen und Rekursion. Bei nicht konstanten Eingaben wird auf die Laufzeit zurückgefallen.
Häufig gestellte Fragen
Ist die Lektion „constexpr und Compile-Zeit“ kostenlos?
Ja — der vollständige Text von „constexpr und Compile-Zeit“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „constexpr und Compile-Zeit“?
Werte zur Compile-Zeit berechnen Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C++ Academy zu starten?
Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „constexpr und Compile-Zeit“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?
Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- const-Variablen und -Parameter
- const-Memberfunktionen
- constexpr und Compile-Zeit
- consteval und constinit