this-> == ClassName::
-
class CClass { private: int num; public: void SetNum(int); } ist CClass::SetNum(int nummer) { CClass::num=nummer; } gleich wie CClass::SetNum(int nummer) { this->num=nummer; }Ist es die einzige Verwendung für this?
-
Wie willste ohne this die Adresse vom Objekt rausfinden?
-
Die Syntax mit CClass::num=nummer sollte eigentlich nicht funktionieren, weil num zum Objekt gehört und nicht zur Klasse.
Damit wäre es dann auch nicht das gleiche wie die zweite Version, bei der Du übrigens das this auch weglassen kannst.Den this-Zeiger brauchst Du zum Beispiel, um das Objekt sich selbst an eine andere Funktion zu übergeben:
Renderer->Draw(this); // Bitte zeichne mich
class Klasse
{
private:
int x;
public:
void f(int x)
{
x = 5; // weise dem Parameter 5 zu.
this->x = 0; // setze das Element x der Klasse auf 0
}
}
Natürlich sollte man sowas vermeiden. Man muß ja Parameter und Klassenelemente nicht unbedingt gleich nennen.MfG Jester
}
-
Ok, jetzt habe ich wohl verstanden wozu man noch den this-Zeiger verwenden kann. Es eröffnen sich mir neue Horizonte.

Nochmal danke für die Erklärungen.
-
Die Syntax mit CClass::num=nummer sollte eigentlich nicht funktionieren
Na sicher funktioniert die.
Heißt nichts weiter als:this->CClass::num=nummer;und damit hier auch
num=nummer;Sei froh, dass diese Syntax funktioniert. Ansonsten gäbe es z.B. keine Möglichkeit virtuelle Methoden über Referenzen (bzw. Zeiger) statisch aufzulösen.
-
Das Programm funktioniert einwandfrei
