Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Chiarimenti concetto e utilizzo *this
Forum - C/C++ - Chiarimenti concetto e utilizzo *this

Avatar
LucaLuca (Normal User)
Newbie


Messaggi: 15
Iscritto: 25/06/2011

Segnala al moderatore
Postato alle 17:41
Sabato, 25/06/2011
Questo topic è stato chiuso dal moderatore

Salve a tutti,
sto leggendo il libro "C++ Fondamenti di programmazione" di Deitel. Un paragrafo porta in esame il puntatore this. Premesso che quanto letto prima l'ho appreso chiaramente (per intenderci, il concetto di puntatore mi è chiaro) vorrei chiedervi alcune delucidazioni a riguardo.

I miei dubbi sono innanzitutto concettuali. Vi riporto parte del testo

"Ogni oggetto può accedere al proprio indirizzo tramite un puntatore di nome this. [...] Il puntatore this viene usato implicitamente per riferire sia i dati che le funzioni membro di un oggetto, e può essere anche utilizzato esplicitamente"

In particolare l'ultima parte non mi è chiara. Vi chiedo gentilmente di spiegarmi questo puntatore o in alternativa di postare link a guide online.

Grazie milleee

P.S. Ho già cercato su google ma non ho trovato nulla di soddisfacente


Edit: Naturalmente anche guide in lingua inglese, non necessariamente italiano

Ultima modifica effettuata da LucaLuca il 25/06/2011 alle 17:48
PM
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Up
-1
Down
V
Segnala al moderatore
Postato alle 17:48
Sabato, 25/06/2011
Quando fai riferimento ad una variabile membro oppure ad un metodo dall'interno della classe che lo contiene:

Codice sorgente - presumibilmente C++

  1. class A{
  2.   private:
  3.   int i;
  4.  
  5.   void f1(){
  6.      i = 0;  // <-- esempio
  7.   }
  8.  
  9.   void f2(){
  10.     f1(); // <--- esempio
  11.   }
  12. };



Durante la fase di parsing il compilatore riconoscerà che i membri fanno parte della stessa classe e aggiungerà:

Codice sorgente - presumibilmente C/C++

  1. void f1(){
  2.   (*this).i = 0;
  3. }
  4. void f2(){
  5.   (*this).f1();
  6. }



Ovviamente i (*this) sono impliciti e sarebbe ridondanti scriverli, quindi il compilatore si fa carico di inserirli al posto tuo. Ma se vuoi scriverli esplicitamente te stesso (come nel secondo pezzo di codice), puoi farlo.

Fin qui nessun problema... - LucaLuca - 25/06/11 17:54
Apro una nuova discussione con stesso titolo. Mi scuso con i moderatori. Questa domanda può venire tranquillamente eliminata. - LucaLuca - 25/06/11 18:08


Il mio blog: https://piero.dev
PM