Usa la parola chiave const con puntatori in C++
-
Usa la parola chiave
const
per indicare oggetti immutabili in C++ -
Utilizzo della parola chiave
const
con tipi di puntatore 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;
}
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