Classi e metodi costanti

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