Quelle est la différence entre constexpr et const en C++ ?
Bonjour à tous ! J'ai commencé à étudier C++11 et je suis tombé sur le nouveau mot-clé `constexpr`. Avant, j'utilisais toujours `const` pour déclarer des variables immuables. Mais maintenant, il y a aussi `constexpr`, et je n'arrive pas à comprendre quand utiliser quoi.
Par exemple, j'écris ce code :
```cpp
const int size = 5;
int arr[size]; // Cela fonctionne
```
Mais si j'écris :
```cpp
int get_size() { return 5; }
const int size = get_size();
int arr[size]; // Erreur de compilation dans les anciens standards !
```
Je comprends que `const` interdit simplement la modification de la variable après l'initialisation, mais ne garantit pas que la valeur est connue à la compilation. En même temps, je vois des exemples avec `constexpr` :
```cpp
constexpr int square(int x) { return x * x; }
constexpr int val = square(5); // Ok, calculé à la compilation
```
Questions :
1. Quelle est la différence fondamentale entre `const` et `constexpr` pour les variables ?
2. Quand faut-il utiliser `constexpr` pour les fonctions ?
3. Est-ce que `constexpr` peut remplacer `con
No answers yet.
Connectez-vous pour laisser une réponse
Blogs