Skip to content

Il Puntatore this

Ricorda che i metodi sono associati alle classi (o alle struct) e che le istanze delle classi sono oggetti. Quando programmi il corpo di un metodo, a volte avrai bisogno di accedere all’oggetto corrente, ovvero l’oggetto specifico che sta eseguendo il metodo in quell’istante.

All’interno delle definizioni dei metodi, il compilatore C++ fornisce un parametro nascosto per puntare proprio all’oggetto corrente. Questo puntatore implicito si chiama this.

Di solito, non hai bisogno di usarlo esplicitamente. L’accesso ai membri dell’oggetto corrente avviene tacitamente sotto il cofano. Ad esempio, quando nel metodo insert_after nel capitolo precedente abbiamo scritto next, il compilatore lo ha interpretato come this->next.

Tuttavia, esistono situazioni in cui l’utilizzo esplicito di this è essenziale.

Un caso tipico in cui si impiega this è la necessità di disambiguare il nome dei membri di una classe. Se dichiari un parametro di metodo con un nome che entra in collisione (ossia è identico) al nome di una variabile membro, il parametro “maschererà” la variabile membro all’interno dello scope del metodo.

Se all’interno di set_year tu avessi scritto year = year;, il compilatore avrebbe assegnato il valore del parametro a sé stesso, lasciando inalterata la variabile membro. Utilizzando this->year, indichi esplicitamente al compilatore che ti riferisci al campo appartenente all’istanza dell’oggetto.