C++ Const

Da Andreabont's Wiki.

In C++ la parola chiave const indica l'immutabilità della variabile o dell'oggetto a cui è riferita. E' molto utile per questioni di sicurezza e di ottimizzazione.

Dichiarazione const locale

const int miavariabile = 1;
miavariabile = 2; // VIETATO!

Passaggio parametri reference-to-const

In C++ il passaggio dei parametri è sempre fatto per valore, quindi si genera sempre una copia locale di tutti i parametri passati. Questo è un problema quando i parametri sono molto grossi o non possono essere copiati. Passare una reference risolve il problema di prestazioni ma ne apre uno di sicurezza, in quanto permetti alla funzione a cui passi il parametro di modificarlo. La soluzione è passare una reference const.

Da notare che il chiamante non deve preoccuparsi di nulla, in quanto nel caso della reference è sufficiente dichiararla nell'intestazione dei parametri per indicare come accedervi.

void miafunzione(const int& miavariabile) {
    // Codice che usa miavariabile
}

Metodi const

Se ho una reference const di un oggetto come sopra posso chiamare soltanto metodi che non modificano lo stato interno dell'oggetto, per specificare quali metodi sono sicuri è possibile usare la parola chiave const dopo il prototipo.

void miometodo() const {
    // Codice...
}