This Referenz < Training < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:49 So 21.03.2010 | Autor: | ert009 |
Aufgabe | Die Erklärung von this,sodass sie bei meinen Referat jeder versteht |
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestelltIch muss morgen ein Referat halten über den Gültigkietsbereich von Variabeln.Mein Lehrer hat mir gerade gemailt ,dass ich auch noch etwas über this referenzen darnnbringen soll.Ich hab jettzt schon ein bisschen gegoogelt,aber ich glaucbe ich habe es nicht richtig verstanden.
This Referenz:
Wenn man zwei Instanzen hat,und eine Methode hat.Dann kann man mit this die aktuelle Instanz aufrufen.Kann mir das jemand noch einmal erklären un zwar möglichst einfach .
MFG
|
|
|
|
Hallo!
Statt mit Instanzen und Methoden
myClass a;
myClass b;
a.doSomething();
b.doSomething();
kannst du auch mit Referenzen auf diese arbeiten:
myClass *a=new myClass();
myClass *b=new myClass();
a->doSomething();
b->doSomething();
Hier sind a und b Referenzen auf die Instanzen, mit dem Pfeil ruft man die Methoden über die Referenzen auf.
Innerhalb der jeweiligen Instanzen kann man einen solchen Aufruf nun auch benutzen, der Aufruf einer zweiten Methode innerhalb der oben genannten Methode könnte so ausssehen
void doSomething(){
this->doSomethingElse();
}
Das wäre also das selbe wie der Aufruf von außen:
a->doSomethingElse();
nur weiß die Instanz natürlich nicht selbst, daß sie a heißt, dafür gibt es den this-zeiger.
So eine Konstruktion ist in C++ nicht erforderlich, da reicht auch
void doSomething(){
doSomethingElse();
}
aber z.B. in Python ist es erforderlich.
Eine etwas gekünstelte Anwendung, die mir auch schon untergekommen ist:
Es gibt eine Funktion, die die Methoden einer Klasse benutzt. Dazu muß die Funktion aber wissen, für welche konkreite Instanz sie das machen muß, also so:
myClass *a=new myClass();
funktion(a);
Nun kann es sein, daß die Instanz selbst die Funktion aufrufen soll, dann muß sie natürlich einen Zeiger auf sich selbst mitgeben:
void doSomething(){
funktion(this);
}
|
|
|
|