C++ this-Zeiger

C++ Klassen und Objekte

In C++ istthis. Der this-Zeiger ist ein spezieller Zeiger, der auf die Instanz des aktuellen Objekts zeigt.

In C++ kann jedes Objekt durchthis. Der this-Zeiger wird verwendet, um auf seine eigene Adresse zuzugreifen.

thisist ein verborgener Zeiger, der in den Memberfunktionen einer Klasse verwendet werden kann und dazu dienen kann, auf das aufrufende Objekt zu zeigen.

Wenn eine Memberfunktion eines Objekts aufgerufen wird, übergibt der Compiler implizit die Adresse dieses Objekts als this-Zeiger.

Friend-Funktionen haben keinenthis-Zeiger, weil ein Friend kein Mitglied der Klasse ist; nur Memberfunktionen besitzen ihn.this-Zeiger.

Das folgende Beispiel hilft, das Konzept des this-Zeigers besser zu verstehen:

Beispiel

#include <iostream> class MyClass { private: int value; public: void setValue(int value) { this->value = value; } void printValue() { std::cout << "Value: " << this->value << std::endl; } }; int main() { MyClass obj; obj.setValue(42); obj.printValue(); return 0; }

Das Ausgabeergebnis der obigen Codeausführung ist:

Value: 42

Beispielanalyse:

  • Im obigen Beispiel haben wir eine Klasse namens MyClass definiert, die eine private Membervariable value besitzt.

  • Die Funktion setValue() in der Klasse wird verwendet, um den Wert von value festzulegen, während die Funktion printValue() verwendet wird, um den Wert von value auszugeben.

  • In der Funktion setValue() verwenden wir den this-Zeiger, um auf die Membervariable value des aktuellen Objekts zu verweisen, und weisen ihr den übergebenen Wert zu. Dies sagt dem Compiler eindeutig, dass wir auf die Membervariable des aktuellen Objekts zugreifen wollen und nicht auf einen Funktionsparameter oder eine lokale Variable.

  • In der Funktion printValue() verwenden wir ebenfalls den this-Zeiger, um auf die Membervariable value des aktuellen Objekts zu verweisen, und geben sie aus.

  • In der Funktion main() erstellen wir ein Objekt obj von MyClass, verwenden dann die Funktion setValue(), um value auf 42 zu setzen, und geben value über die Funktion printValue() aus.

  • Durch die Verwendung des this-Zeigers können wir in Memberfunktionen auf die Membervariablen des aktuellen Objekts zugreifen, selbst wenn sie dieselben Namen wie Funktionsparameter oder lokale Variablen haben. Dadurch werden Namenskonflikte vermieden und sichergestellt, dass wir auf die richtige Variable zugreifen.

Weitere Beispiele

Das folgende Beispiel wird verwendet, um die Volumina von Quadern zu vergleichen

Beispiel

#include <iostream> using namespace std; class Box { public: // Konstruktordefinition Box(double l=2.0, double b=2.0, double h=2.0) { cout <<"Konstruktor aufrufen." << endl; length = l; breadth = b; height = h; } double Volume() { return length * breadth * height; } int compare(Box box) { return this->Volume() > box.Volume(); } private: double length; // Breite double breadth; // Länge double height; // Höhe }; int main(void) { Box Box1(3.3, 1.2, 1.5); // box1 deklarieren Box Box2(8.5, 6.0, 2.0); // box2 deklarieren if(Box1.compare(Box2)) { cout << "Das Volumen von Box2 ist kleiner als das von Box1." <<endl; } else { cout << "Das Volumen von Box2 ist größer als oder gleich dem von Box1." <<endl; } return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

调用构造函数。
调用构造函数。
Box2 的体积大于或等于 Box1

C++ Klassen und Objekte

Weitere Erweiterungen