Können Sie das Konzept des this pointer erklären? [geschlossen]

8

Ich muss this Zeiger-Konzept verstehen, vorzugsweise mit einem Beispiel.

Ich bin neu in C ++, also bitte benutze eine einfache Sprache, damit ich sie besser verstehen kann.

    
Trupti 19.12.2010, 15:36
quelle

4 Antworten

6

this ist ein Zeiger auf eine Instanz seiner Klasse und für alle nicht statischen Elementfunktionen verfügbar.

Wenn Sie eine Klasse deklariert haben, die ein privates Mitglied foo und eine Methode bar hat, steht foo bar via this->foo zur Verfügung, nicht aber "outsiders" über instance->foo .

    
Linus Kleen 19.12.2010, 15:40
quelle
5

Der this -Zeiger wird in einer Klasse verwendet, um auf sich selbst zu verweisen. Es ist oft praktisch, wenn Sie einen Verweis auf sich selbst zurückgeben. Schauen Sie sich das Prototyp-typische Beispiel mit dem Zuweisungsoperator an:

%Vor%

Manchmal, wenn die Dinge verwirrend werden, könnten wir sogar sagen

%Vor%

aber in dieser Situation wird es normalerweise als Overkill betrachtet.

Als nächstes, wenn wir unser Objekt konstruieren, benötigt eine enthaltene Klasse einen Verweis auf unser Objekt, um zu funktionieren:

%Vor%

So this wird verwendet, um unser Objekt an enthaltene Objekte zu übergeben. Ansonsten, ohne this wie würde die Klasse bedeuten, in der wir uns befanden? Es gibt keine Instanz des Objekts in der Klassendefinition. Es ist eine Klasse, kein Objekt.

    
wheaties 19.12.2010 15:43
quelle
3

Wenn Sie in objektorientierter Programmierung eine Methode für ein Objekt aufrufen, zeigt der this -Zeiger auf das Objekt, für das Sie die Methode aufgerufen haben.

Zum Beispiel, wenn Sie diese Klasse haben

%Vor%

und ein Objekt x davon, und Sie rufen f() auf x

auf %Vor%

dann innerhalb von X::f() , this zeigt auf x :

%Vor%

Da der Zugriff auf Klassenmitglieder, auf die mit this verwiesen wird, so häufig ist, können Sie this-> :

weglassen %Vor%     
sbi 19.12.2010 15:53
quelle
1

Zeiger ist ein Variablentyp , der auf einen anderen Speicherbereich verweist . Zeiger können nur Adressen von Speicherplätzen enthalten

zum Beispiel, wenn wir einen "int Zeiger" sagen - & gt; es enthält die Speicheradresse einer int-Variablen

Leerer Zeiger - & gt; kann jede Art von Speicheradresse enthalten, die kein spezifischer Datentyp ist.

& amp; gibt die spitze Variable (oder den Wert des Zeigers, auf den verwiesen wurde)

    
Sudantha 19.12.2010 15:47
quelle

Tags und Links