Gå til innhold

Hvordan fungerer this-> peker her?


Anbefalte innlegg

Klassen Node har metodene

Node * MakeLeftNode() {Node * newptr = new Node; this->LPtr = newptr; return newptr;}

og

void Node::Copytree(Node * ptr){
  ptr = ptr->MakeLeftNode();
}

 

Spørsmålet er i det siste kallet: vil 'this'-pointeren som refereres til i MakeLeftNode-metoden peke på objektet som 'ptr' peker til eller til objektet vi er i når kallet gjøres? Svar raskt:)

Endret av Sigdal
Lenke til kommentar
Videoannonse
Annonse

void Foo::bar()
{
  // foo er member i klassen Foo.
  foo = 0;
}

 

Dette er helt ekvivalent med

void Foo::bar()
{
  this->foo = 0;
}

this er objektet som "behind the scenes" sendes til funksjonen Foo::bar(), og som gjør at funksjonen kan skille mellom forskjellige objekter fra samme klasse. I python f.eks må man eksplisitt ta i mot this (self)-objektet og bruke self.foo, dette gjør C++ automagisk.

 

Hvis man skulle kodet det samme i C ville det ha sett slik ut

 

void foo_bar(struct foo *this)
{
 this->foo = 0;
}

 

Så med ptr->MakeLeftNode(), vil ptr være this i den metoden.

Endret av TheMaister
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...