La parola chiave this identifica un puntatore che fa riferimento alla classe. Non occorre che venga dichiarato poiché la sua dichiarazione è implicita nella classe.
nome_classe* this; //dove nome_classe è il tipo della classe
Il puntatore this punta all'oggetto per il quale è stata richiamata la funzione membro. Vediamo un esempio:
class costante
{
int a;
public:
void setta_cost( int val);
};void costante::setta_cost(int val)
{
a = val;
}
All'interno di una funzione membro l'accesso ai membri della classe avviene direttamente senza che sia necessario qualificare l'oggetto o la classe. Pertanto, all'interno di setta_cost() l'istruzione
a = val;
significa che alla copia di a associata all'oggetto chiamante viene assegnato il valore contenuto in val. Si sarebbe potuta scrivere la stessa istruzione nel seguente modo
this->a = val;
Il puntatore this punta all'oggetto che ha richiamato setta_cost(). Pertanto, con this->a si fa riferimento alla copia di a contenuta in tale oggetto. E' bene ricordare che tralasciando il puntatore this si utilizza in effetti una forma abbreviata dell'istruzione. Ecco l'aspetto di setta_cost() facendo uso del puntatore this:
void costante::setta_cost(int val)
{
this->a = val;
}
Nessun programmatore scriverebbe mai la funzione setta_cost() in questo modo, poiché in realtà non si guadagna nulla utilizzando this e non la forma abbreviata. Tuttavia, il puntatore this è molto importante nel caso di overloading degli operatori e in tutti i casi in cui una funzione membro debba utilizzare un puntatore all'oggetto che l'ha richiamata.