Avatar ·

Quelle est la différence entre constexpr et const en C++ ?

Bonjour ! J'ai récemment commencé à étudier C++11 et je suis tombé sur le mot-clé `constexpr`. Je comprends que `const` signifie que la valeur d'une variable ne peut pas être modifiée après l'initialisation. Mais `constexpr` semble aussi rendre la variable constante. Quelle est donc la différence ? Par exemple, je peux écrire : ```cpp const int x = 5; constexpr int y = 5; ``` Les deux fonctionnent. Mais j'ai entendu dire que `constexpr` peut être utilisé avec des fonctions. J'ai essayé : ```cpp constexpr int square(int n) { return n * n; } int main() { const int a = square(5); // Ça marche ? constexpr int b = square(5); // Ça marche aussi ? int arr[ square(3) ]; // Est-ce possible ? } ``` Cela se compile, mais je ne comprends pas quel est l'avantage réel. Quand faut-il utiliser `constexpr` plutôt que `const` ? Et pourquoi `const` ne suffit-il pas ? J'ai l'impression que c'est une duplication de fonctionnalité. Expliquez-moi, s'il vous plaît, avec des exemples, quand utiliser quoi. Merci d'avance ! <<>>

La différence clé :