Strutture e costanti: la parola mutable

Quando dichiariamo una variabile appartenente ad un tipo definito da una struttura, possiamo come nelle comuni variabili farlo precedere dalla parola const, per evitare che i suoi membri vengano modificati:

const Utente pietro = creaUtente(24, 180);

pietro.altezza = 179; //ERRATO!

Questa operazione è illegale perché la variabile pietro è const, quindi una volta dichiarata ed inizializzata non possiamo modificare i suoi membri.

Tuttavia se un membro della struttura è dichiarato mutable, questo lo rende modificabile anche se l'istanza della struttura è stada dichiarata come const:
struct Utente {
mutable int età;
float altezza;
};

const Utente pietro = creaUtente(24, 180);

pietro.età = 23; //LEGALE!
Nonostante la variabile pietro sia dichiarata const è possibile modificare il membro età, perché questo è stato dichiarato mutable all'interno della struttura Utente.

Per ora questo è tutto sulle costanti, anche se esiste un'ultima possibilità di utilizzo della parola const, ma ne parleremo quando tratteremo delle classi nella programmazione ad oggetti.

Nessun commento:

Posta un commento