this. in c++

Allora, poiché quando definisci una classe non allochi niente in memoria, se devi utilizzare un qualcosa all'interno della classe stessa non puoi sapere a priori dove si troverà il dato di interesse. Ad esempio:

Class miaclasse{
  int ciao;

  public:
    void settavalore(int i);
    int restituisci_valore();
}

miaclasse::settavalore(int i) {
  this->ciao = i;
}

miaclasse:restituisci_valore() {
  return this->ciao;
}

La variabile "ciao ancora non esiste da nessuna parte. Quando, nel main del programma, viene creata una istanza della classe, allora viene allocata la memoria.

miaclasse prova1;
miaclasse prova2;

Adesso ne esistono due di quelle variabili che hai creato col nome "ciao", una dentro prova1 e l'altra dentro prova2. Come fa il sistema a distinguerle? Bene, con il puntatore this. This è un puntatore che per prova1 punta a prova1 e per prova2 punta a prova2, quindi this->ciao sarà il ciao dentro prova1 per prova1 e il ciao dentro prova2 per prova2.

Quando fai prova1.settavalore(5) metti il valore 5 dentro la variabile ciao dentro l'istanza prova1, così quando fai prova1.restituisci_valore() avrai di ritorno il valore di ciao che è dentro prova1 e non quello che è dentro prova2.

Detto questo, per quanto detto qui sopra il this lo puoi omettere perché ci pensa il compilatore a fare il lavoro sporco, ma serve per farti capire a cosa serve il puntatore this. In realtà è necessario per altre cose.

Volendo è spiegato anche qui: http://www.sitoserio.it/cpp/OOP/app3.htm