C++ Tutorial

this-Zeiger

Jede nicht-statische Methode erhält als versteckten Parameter einen Zeiger auf das Objekt, in dessen Kontext sie aufgerufen wurde. Dieser Zeiger wird this-Zeiger genannt. Er ist immer vom Typ 'Zeiger auf eigene Klasse'.

1: #include <iostream>
2: #include <print>
3:
4: // Klassendefinition
5: class CAny
6: {
7: public:
8:    void Anything();
9: };
10: // Defínition der einzigen Memberfunktion
11: void CAny::Anything()
12: {
13:    // Inhalt des this-Zeigers ausgeben
14:    std::println("this = {:p}",
15:                  reinterpret_cast<void*>(this));
16: }
17:
18: // main() Funktion
19: int main()
20: {
21:    // 2 Objekte definieren
22:    CAny obj1, obj2;
23:    // Adressen der Objekte ausgeben
24:    std::println("Adr. obj1 = {:p}",
25:                  reinterpret_cast<void*>(&obj1));
26:    std::println("Adr. obj2 = {:p}",
27:                  reinterpret_cast<void*>(&obj2));
28:    // this-Zeiger der Objekte ausgeben
29:    std::cout << "this-Zeiger ausgeben:\n";
30:    obj1.Anything();
31:    obj2.Anything();
32: }

Adr. obj1 = 0xbc0d9ffd0f
Adr. obj2 = 0xbc0d9ffd0e
this-Zeiger ausgeben:
this = 0xbc0d9ffd0f
this = 0xbc0d9ffd0e

In main() werden zwei Objekte definiert und anschließend deren Adressen ausgegeben.

Danach rufen beide Objekte die Methode Anything() auf, die den Inhalt des this-Zeigers ausgibt. Und da dieser Zeiger laut obiger Aussage auf das aufrufende Objekt verweist, werden dieselben Adressen wie in main() ausgegeben.

Vielleicht fragen Sie sich, wofür dieser Zeiger eingesetzt wird? Nun, dieser Zeiger wird immer dann benötigt, wenn ein Zeiger oder eine Referenz auf das aktuelle Objekt innerhalb einer Methode benötigt wird.


Copyright 2024 © Wolfgang Schröder
E-Mail mit Fragen oder Kommentaren zu dieser Website an: info@cpp-tutor.de
Impressum & Datenschutz