constexpr en compile time
Bereken waarden tijdens het compileren
constexpr en compile time is een gratis C++ Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C++ Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C++ Academy bevat in totaal 4 lessen.
Wat constexpr betekent
constexpr geeft de compiler aan dat een waarde of functie tijdens de compileertijd kan worden geëvalueerd, waardoor een echte compileertijdconstante ontstaat.
#include <iostream>
int main() {
constexpr int size = 4 * 4; // computed at compile time
int arr[size];
std::cout << sizeof(arr) / sizeof(int) << "\n";
}constexpr-functies
Een constexpr-functie kan tijdens de compileertijd worden uitgevoerd wanneer deze constante argumenten krijgt, en anders tijdens de uitvoeringstijd.
#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
}Compileertijdconstanten in arrays
Omdat constexpr-waarden tijdens de compileertijd bekend zijn, kunnen ze de grootte van arrays bepalen en als sjabloonargumenten dienen.
constexpr versus const
const betekent "kan niet veranderen"; constexpr betekent "bekend tijdens de compileertijd". Elke constexpr is impliciet const, maar niet elke const is 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";
}Recursieve constexpr
constexpr-functies mogen recursief zijn, zodat de compiler bijvoorbeeld faculteiten kan berekenen voordat het programma wordt uitgevoerd.
#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";
}Uitgebreidere constexpr in modern C++
Sinds C++14 mogen constexpr-functies lussen, lokale variabelen en vertakkingen bevatten, zodat je tijdens de compileertijd complexe constanten kunt berekenen.
#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-variabelen moeten tijdens de compileertijd worden geïnitialiseerd
Een variabele die als constexpr is gedeclareerd, moet een initialisatie-expressie hebben die tijdens de compileertijd kan worden geëvalueerd, anders wordt het programma niet gecompileerd.
Voordelen van berekeningen tijdens de compileertijd
Berekenen tijdens de compileertijd betekent geen kosten tijdens de uitvoering, waarden die in constante contexten kunnen worden gebruikt en eerdere detectie van fouten.
constexpr en sjablonen
constexpr-waarden sluiten natuurlijk aan bij sjablonen en std::array, waarbij groottes en parameters compileertijdconstanten moeten zijn.
Wanneer het terugvalt op uitvoeringstijd
Als een constexpr-functie niet-constante argumenten krijgt, wordt deze gewoon tijdens de uitvoeringstijd uitgevoerd zoals een normale functie — zonder fout.
Geef de voorkeur aan constexpr voor constanten
Gebruik constexpr voor echte constanten, zoals groottes, wiskundige berekeningen en opzoektabellen. Het is expressiever dan const en maakt garanties tijdens de compileertijd mogelijk.
Korte controle
Test je begrip van constexpr.
Samenvatting
Je hebt geleerd dat constexpr evaluatie van variabelen en functies tijdens de compileertijd mogelijk maakt, verschilt van const (dat alleen wijzigingen verbiedt), lussen en recursie in modern C++ ondersteunt en terugvalt op de uitvoeringstijd wanneer het niet-constante invoer krijgt.
Leer C++ met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 51
- Lessen
- 203
Veelgestelde vragen
Is de les “constexpr en compile time” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad C++ Academy, waaronder “constexpr en compile time”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus C++ Academy bevat in totaal 4 lessen.
Wat leer ik in “constexpr en compile time”?
Bereken waarden tijdens het compileren Je oefent met C++ Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met C++ Academy te beginnen?
Ervaring vooraf is niet nodig. C++ Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “constexpr en compile time”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over C++ Academy?
Ja. Elke les over C++ Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- const-variabelen en -parameters
- const-memberfuncties
- constexpr en compile time
- consteval en constinit