Quando abbiamo trattato delle costanti abbiamo detto che c'era un altro utilizzo della parola const, che aveva a che fare con le classi.
Quando un oggetto viene dichiarato const questo non impedisce ad un metodo della classe di modificare l'oggetto stesso:
const Classe oggetto1;
oggetto1.proprieta = 93; //OPERAZIONE ILLEGALE!
oggetto1.metodo(93); //OPERAZIONE LEGALE!
Se vogliamo che un metodo non modifichi l'oggetto chiamante, dobbiamo dichiarare const tale metodo, sia nel prototipo che nella sua implementazione:
int metodo(int) const;
int Classe::metodo(int param1) const
{
...
}
Bisogna ricordare anche che la parola mutable, così come per le strutture, è valida anche per i membri delle classi, e rende modificabile una proprietà anche se l'oggetto è dichiarato costante.
Nessun commento:
Posta un commento