Usa la parola chiave const con puntatori in C++

Jinku Hu 12 ottobre 2023
  1. Usa la parola chiave const per indicare oggetti immutabili in C++
  2. Utilizzo della parola chiave const con tipi di puntatore in C++
Usa la parola chiave const con puntatori in C++

Questo articolo ti mostrerà i metodi per utilizzare la parola chiave const con i puntatori in C++.

Usa la parola chiave const per indicare oggetti immutabili in C++

In genere, la parola chiave const viene utilizzata per specificare che l’oggetto dato deve essere immutabile durante l’esecuzione del programma. La pratica di denominare i valori costanti aiuta a mantenere la base di codice più regolabile e facile da mantenere rispetto alla specificazione diretta dei valori letterali. Inoltre, la parola chiave const è molto utilizzata dalle interfacce delle funzioni per indicare che i parametri forniti sono di sola lettura e aiutano a mitigare gli errori di runtime a quelli di compilazione.

Dichiariamo un oggetto const includendo la parola chiave prima dell’identificatore di tipo, come mostrato nel seguente frammento di codice. Qui osserverai che la variabile s1 viene creata come string di sola lettura e agli oggetti const non può essere assegnato un valore diverso. Pertanto, devono essere inizializzati durante la dichiarazione. Se proviamo a modificare l’oggetto const, viene generato l’errore del compilatore.

#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;
}

Produzione:

s1 : Hello s2 : HelloJoe

Utilizzo della parola chiave const con tipi di puntatore in C++

Nota che quando dichiariamo un oggetto puntatore, di solito includiamo anche il tipo dell’oggetto puntato. Quindi, diventa difficile specificare solo una parola chiave const come prefisso all’istruzione di dichiarazione. Di conseguenza, abbiamo bisogno di specificatori const separati per il puntatore e l’oggetto puntato stesso.

Generalmente, avremmo tre combinazioni di questi specificatori: il primo in cui sia il puntatore che l’oggetto non sono modificabili; la seconda combinazione in cui il puntatore non può essere riassegnato, ma l’oggetto stesso è mutabile; infine, abbiamo la variante in cui il puntatore è mutabile e l’oggetto no.

Tutte e tre le varianti sono dichiarate nel frammento di codice successivo per dimostrare la corrispondente notazione sintattica. A volte, si suggerisce di leggere queste dichiarazioni dall’identificatore più a destra a sinistra, ma si può anche ricordare che il dichiaratore *const è usato per indicare i puntatori immutabili.

#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;
}
Autore: 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

Articolo correlato - C++ Const