Puntatore this

di il
2 risposte

Puntatore this

Salve, vorrei un chiarimento del puntatore this in c++.
In questo codice ad esempio viene utilizzato this:
#include <iostream>
using namespace std;
class Demo {
private:
  int num;
  char ch;
public:
  void setMyValues(int num, char ch){
    this->num =num;
    this->ch=ch;
  }
  void displayMyValues(){
    cout<<num<<endl;
    cout<<ch;
  }
};
int main(){
  Demo obj;
  obj.setMyValues(100, 'A');
  obj.displayMyValues();
  return 0;
}
Ho capito come funzione ma quello che non mi spiego è il perchè si riccorre a questo, non avrei potuto fare così ? :
#include <iostream>
using namespace std;
class Demo {
private:
  int num;
  char ch;
public:
  void setMyValues(int a, char b){
    num = a;
    ch = b;
  }
  void displayMyValues(){
    cout<<num<<endl;
    cout<<ch;
  }
};
int main(){
  Demo obj;
  obj.setMyValues(100, 'A');
  obj.displayMyValues();
  return 0;
}

2 Risposte

  • Re: Puntatore this

    Guarda che
    
     num = a;
     ch = b;
    
    è la versione implicita di
    
     this->num = a;
     this->ch = b;
    
    Comunque sì - è meglio scriverlo usando nomi diversi: se usi gli stessi nomi poi ovviamente sei obbligato ad esplicitare "this->" per distinguerli.

    Ci sono casi più interessanti dove si usa il this, ad esempio negli overload degli operatori
    http://www-old.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/30Overload.html
  • Re: Puntatore this

    È la stessa cosa, ma nel primo caso vanno distinti il num della classe dal parametro della funzione, per questo usa this.
Devi accedere o registrarti per scrivere nel forum
2 risposte