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.