constexpr et évaluation à la compilation
Calculer des valeurs lors de la compilation
constexpr et évaluation à la compilation est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.
Ce que signifie constexpr
constexpr indique au compilateur qu'une valeur ou une fonction peut être évaluée à la compilation, ce qui produit une véritable constante connue à la compilation.
#include <iostream>
int main() {
constexpr int size = 4 * 4; // computed at compile time
int arr[size];
std::cout << sizeof(arr) / sizeof(int) << "\n";
}Fonctions constexpr
Une fonction constexpr peut s'exécuter à la compilation lorsqu'elle reçoit des arguments constants, et à l'exécution dans le cas contraire.
#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
}Constantes de compilation dans les tableaux
Comme les valeurs constexpr sont connues à la compilation, elles peuvent dimensionner des tableaux et servir d'arguments de modèle.
constexpr et const
const signifie « ne peut pas changer » ; constexpr signifie « connu à la compilation ». Tout constexpr est implicitement const, but toute valeur const n'est pas 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";
}constexpr récursif
Les fonctions constexpr peuvent être récursives, ce qui permet au compilateur de calculer des valeurs comme des factorielles avant l'exécution du programme.
#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";
}constexpr plus riche en C++ moderne
Depuis C++14, les fonctions constexpr peuvent contenir des boucles, des variables locales et des branchements, ce qui permet de calculer des constantes complexes à la compilation.
#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";
}Les variables constexpr doivent être initialisées à la compilation
Une variable déclarée constexpr doit avoir un initialiseur évaluable à la compilation, sinon le programme ne compilera pas.
Avantages du calcul à la compilation
Calculer à la compilation signifie un coût nul à l'exécution, des valeurs utilisables dans des contextes constants et une détection plus précoce des erreurs.
constexpr et les modèles
Les valeurs constexpr s'associent naturellement aux modèles et à std::array, dont les tailles et les paramètres doivent être des constantes connues à la compilation.
Retour à l'exécution
Si une fonction constexpr reçoit des arguments non constants, elle s'exécute simplement à l'exécution comme une fonction normale — aucune erreur ne se produit.
Préférer constexpr pour les constantes
Utilisez constexpr pour les véritables constantes (tailles, calculs mathématiques, tables de correspondance). Il est plus expressif que const et permet d'obtenir des garanties à la compilation.
Vérification rapide
Vérifiez votre compréhension de constexpr.
Récapitulatif
Vous avez appris que constexpr permet l'évaluation à la compilation des variables et des fonctions, qu'il diffère de const (qui interdit seulement la modification), qu'il prend en charge les boucles et la récursion en C++ moderne, et qu'il revient à l'exécution lorsqu'il reçoit des entrées non constantes.
Questions Fréquemment Posées
La leçon « constexpr et évaluation à la compilation » est-elle gratuite ?
Oui — le texte complet de « constexpr et évaluation à la compilation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « constexpr et évaluation à la compilation » ?
Calculer des valeurs lors de la compilation Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C++ Academy ?
Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « constexpr et évaluation à la compilation » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?
Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Variables et paramètres const
- Fonctions membres const
- constexpr et évaluation à la compilation
- consteval et constinit