Utilisez le mot-clé const avec des pointeurs en C++

Jinku Hu 12 octobre 2023
  1. Utilisez le mot-clé const pour désigner des objets immuables en C++
  2. Utilisation du mot-clé const avec des types de pointeur en C++
Utilisez le mot-clé const avec des pointeurs 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;
}
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Article connexe - C++ Const