gizno82 hat geschrieben:Also wenn man in einer Methode auf ein Klassenelement zugreifen möchte, immer schön den this-> Zeiger benutzen.
this ist ein Zeiger auf die aktuelle Instanz. In einer Methode, befindet man sich grundsätzlich in einer "dieser" Instanz. Damit ist "member" der Name eines Members "dieser" Instanz und "this->member" dasselbe mit mehr Prosa. Ich benutze this eigentlich nur, wenn ich zum Beispiel an einen Operator heranmöchte:
genauso gut ist aber auch
this brauchst Du vorrangig, um fremde Methoden aufzurufen und ihnen "diese" Instanz mitzugeben.
Ich selbst benutze "this->" nicht, trotzdem kann ich von der Verwendung von "this->" nicht wirklich abraten, da es den Zugriff auf die Membervariable klar beschreibt, im Gegensatz zu globalen-, lokalen- oder Parametervariablen.
gizno82 hat geschrieben:Um deutlich zu machen, das man auf ein Element genau dieser Klasse zugreifen möchte.
Benutzt man den this-> Zeiger nur aus Gründen der Übersichtlichkeit oder gibt es noch andere Gründe ?
Ich kenne niemanden, der es benutzt.
Es zu benutzen würde in meinen Augen von hoher Disziplin zeugen. Wird eine Membervariable aber irgendwann zum Parameter oder zur lokalen Variablen, bzw. eine solche zur Membervariablen, bedeutet das viel umzuschreiben. Damit wird die Sache schnell inkonsistent, weil die Verwendung nicht verpflichtend ist. Also rate ich doch vorsichtig davon ab. ^^
Kerlis Beispiel mit this->data halte ich für eine Falle. Eine Variable sollte nie wie eine Member heißen. Wird die Funktion erweitert, besteht große Verwechslungsgefahr. Statt des Symptoms sollte man das Problem lösen und den Parameter umbenennen.