this Zeiger in c++ verstehen

Gast #3698488
Lesenswert?
• ▲
▼
Hallo,

this Zeiger liefert innerhalb einer Elementfunktion die Adresse des 
Objekts zurück, auf das sich die Elementfunktion bezieht.

gilt das auch für Konstruktoren? kann mir jemand anhand eines einfachen 
beispiel das Thema "this Zeiger" erklären, von Wikipedia werde ich nicht 
schlauer!

Danke im Voraus!
Gast #3698503
Lesenswert?
• ▲
▼
Der Aufruf einer Member-Funktion in C++ funktioniert genauso wie der 
Aufruf einer normalen Funktion dessen 1. Parameter ein Pointer ist:
Die klassische C-Version
1
struct Test {
2
  int x;
3
};
4
void Test_Funktion (Test* this_) {
5
  this_->x = 7;
6
}
7
int main () {
8
  Test t;
9
  Test_Funktion (&t);
10
}
entspricht in C++ mit Member-Funktionen
1
class Test {
2
  public:
3
    int x;
4
    void Funktion () { this->x = 7; }
5
};
6
int main () {
7
  Test t;
8
  t.Funktion ();
9
}

Lediglich das this-> kann man in C++ weglassen, das "x" würde trotzdem 
gefunden.

Hier ein Beispiel wie die Adressen aussehen: http://ideone.com/JhAm9n
Man sieht, dass die Adresse von "this" der von "t" in main() entspricht 
(auf dem die Funktion aufgerufen wurde). Die Adresse der 1. 
Member-Variablen ist die selbe, da diese am Anfang der Instanz steht. 
Die 2. Member-Variable folgt darauf und hat daher eine größere Adresse.
Gast #3698856
Lesenswert?
• ▲
▼
Georg A. schrieb:
>> gilt das auch für Konstruktoren?
>
> Klar, der Speicher für das Objekt muss vor dem Konstruktor-Call schon
> angelegt sein, sonst würde ja jegliche Member-Initialisierung darin in
> die Pampa gehen.

Es sei aber erwähnt, daß man aufpassen muß. Da das Objekt ja noch nicht 
vollständig initialisiert ist, kann's Probleme geben, wenn man den 
Zeiger nach "draußen" gbit und dort an der Stelle dann sofort Zugriffe 
über den Zeiger macht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren