Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++ Grundkurs

This-Zeiger

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Der this-Zeiger erlaubt es einem Objekt, auf sich selbst zuzugreifen. Sämtliche nicht statischen Methoden in C++ besitzen einen derartigen Zeiger.
03:07

Transkript

In dieser Lektion möchte ich Ihnen Besonderheiten von Methoden in C++ vorstellen, den sogenannte *this*-Zeiger. Der *this*-Zeiger ist ein Zeiger, den jede nichtstatische Methode besitzt und der auf das implizite Objekt verweist, zu dem diese Methode gehört. Dieser *this*-Zeiger lässt sich aber auch explizit verwenden. Man kann ihn z.B. verwenden, um auf verdeckte Attribute der Instanz zuzugreifen. Genau das habe ich hier dargestellt. Ich habe hier eine Klasse *Base*. Die hat eine Instanzvariable *a* initialisiert mit dem Wert 1998 und eine Methode *newA*, die eine lokale Variable *a* hat, initialisiert mit dem Wert 2011. Durch *this-a;* kann ich jetzt auf die Instanzvariable zugreifen. Durch *a* ohne *this* auf die lokale Variable. Das zeige ich Ihnen jetzt noch im Beispiel. Die Klasse *Base *besitzt zwei Methoden, den sogenannten Zuweisungsoperator und eine Methode *newA*. Auf den Zuweisungsoperator gehe ich ein. Insbesondere weil in ihm häufig der *this*-Zeiger benötigt wird. Der Zuweisungsoperator wird dazu benötigt, ein bestehendes Objekt mit einem neuen Objekt zu initialisieren. Durch *this == &other*, also *this* identisch *other*, kann ich rausfinden, ob das aktuelle Objekt *this* die gleiche Speicheradresse besitzt, wie das andere Objekt *other*. Wenn das der Fall ist, sind *this* und *other* die gleichen Objekte. Was bedeutet das? Ich habe einen Ausdruck, wo *a* selber *a* zugewiesen wird, wo ein Objekt sich selber zugewiesen wird. Da will ich keine Zuweisung machen und gebe das Objekt wieder zurück bzw. die Adresse des Objekts. Falls *this* ungleich *other* ist, setzte ich die Werte von *a*, *b* neu und gebe das Objekt wiederum zurück. Hier *newA*, jetzt wird es ein bisschen interessanter. Hier habe ich eine lokale Variable *a*. Durch *this-a* referenziere ich nicht die lokale Variable *a*, sondern die Instanzvariable *a*. Das sehen Sie hier. Durch *this-a* beziehe ich mich auf das 1998. Verwende ich *a* beziehe ich mich auf die lokale Variable *a*. Das ist der Grund, wieso jetzt 2011 rauskommt. Weiter geht es mit dem *b*. Das *b* hier bezieht sich, da es keine lokale Variable *b* gibt, auf die Instanzvariable *b*. Das wird also auf 2014 abgebildet. Das Gleiche passiert hier. Indem ich auf die Instanzvariable zugreife, greife ich natürlich auf *b* zu und als Ergebnis bekomme ich 2014. Zum Schluss mache ich eine Selbstzuweisung. Sie sehen hier, ich habe *base2*, das ich *base* zuweise. Dann mache ich es noch einmal. Also *base* weise ich *base2* zu. *base2* weise ich *base* zu. Ich habe also eine Selbstzuweisung. Dementsprechend bekomme ich die Ausgabe *self-assignment*. Weil die Adresse von *base* und *base2* die gleiche ist, trifft diese Bedingung hier zu und auf der Konsole erscheint *self-assignment*. In dieser Lektion habe ich Ihnen den *this*-Zeiger vorgestellt. Der *this*-Zeiger ist eine Möglichkeit im Objekt auf das Objekt selber zuzugreifen.

C++ Grundkurs

Steigen Sie in die mächtige Programmiersprache C++ ein und lernen Sie dabei alle wichtigen Funktionen mit Anwendungsbeispielen kennen.

8 Std. 14 min (147 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!