Utilisez le mot-clé const avec des pointeurs en C++
-
Utilisez le mot-clé
const
pour désigner des objets immuables en C++ -
Utilisation du mot-clé
const
avec des types de pointeur en C++
Cet article vous montrera les méthodes d’utilisation du mot-clé const
avec des pointeurs en C++.
Utilisez le mot-clé const
pour désigner des objets immuables en C++
Généralement, le mot-clé const
est utilisé pour spécifier que l’objet donné doit être immuable tout au long de l’exécution du programme. La pratique de nommer les valeurs constantes permet de garder la base de code plus ajustable et facile à maintenir par rapport à la spécification directe de valeurs littérales. De plus, le mot-clé const
est fortement utilisé par les interfaces de fonction pour indiquer que les paramètres donnés sont en lecture seule et aider à atténuer les erreurs d’exécution à celles de la compilation.
Nous déclarons un objet const
en incluant le mot-clé avant le spécificateur de type, comme indiqué dans l’extrait de code suivant. Ici, vous remarquerez que la variable s1
est créée en tant que string
en lecture seule et que les objets const
ne peuvent pas se voir attribuer une valeur différente. Ainsi, ils doivent être initialisés lors de la déclaration. Si nous essayons de modifier l’objet const
, l’erreur du compilateur est levée.
#include <iostream>
using std::cout;
using std::endl;
using std::string;
int main() {
const string s1("Hello");
string s2("Hello");
// s1 += "Joe"; // Error
s2 += "Joe";
cout << "s1: " << s1 << endl;
cout << "s2: " << s2 << endl;
return EXIT_SUCCESS;
}
Production:
s1 : Hello s2 : HelloJoe
Utilisation du mot-clé const
avec des types de pointeur en C++
Notez que lorsque nous déclarons un objet pointeur, nous incluons généralement également le type de l’objet pointé. Ainsi, il devient délicat de spécifier un seul mot-clé const
comme préfixe de l’instruction de déclaration. Par conséquent, nous avons besoin d’avoir des spécificateurs const
séparés pour le pointeur et l’objet pointé lui-même.
Généralement, nous aurions trois combinaisons de ces spécificateurs : la première où le pointeur et l’objet ne sont pas modifiables ; la deuxième combinaison où le pointeur ne peut pas être réaffecté, mais l’objet lui-même est mutable; enfin, nous avons la variante où le pointeur est mutable et l’objet ne l’est pas.
Les trois variantes sont déclarées dans l’extrait de code suivant pour illustrer la notation syntaxique correspondante. Parfois, il est suggéré de lire ces déclarations du spécificateur le plus à droite vers la gauche, mais vous pouvez aussi vous rappeler que le déclarateur *const
est utilisé pour indiquer les pointeurs immuables.
#include <iostream>
using std::cout;
using std::endl;
using std::string;
int main() {
string s2("Hello");
const string *const s3 = &s2; // both are non-mutable
s3 = &s2; // Error
*s3 = s2; // Error
const string *s4 = &s2; // only string object is non-mutable
s4 = s3;
*s4 = s2; // Error
string *const s5 = &s2; // only pointer is non-mutable
s5 = s3; // Error
*s5 = s2;
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook