this zeiger

leooo

Grünschnabel
hallo!

in knapp einem monat schreibe ich meine programmier klausur (c++). sie beinhaltet die projektorientierte programmierung. nun hänge ich schon eine zeitlang an den this zeigern.
ich weiß dass der this zeiger auf das "aktuelle" objekt zeigt, aber woher weiß ich welches das aktuelle objekt ist? ist das nicht einfach das objekt mit dem ich gerade abreite? warum brauch ich dann jetzt aufeinmal einen this pointer? oder ist der speziell für klassen?

bitte eine einfach erklärte antwort, dass wäre toll!
schönes we noch!
 
Zuletzt bearbeitet:
Hi

Keine Ahnung, was du mit abreiten meinst...

Und this ist nur für Klassen ja.

Vielleicht wird es mit einem Beispiel verständlicher:
C++:
class klasse
{
public:
    void funktion()
    {
        //Hier drinnen "this" verwenden
    }
};

int main()
{
    klasse a, b, c;
    a.funktion(); //In dem Fall ist this ein Pointer auf a
    b.funktion(); //hier ein Pointer auf b
    c.funktion(); //und hier auf c
}

Gruß
 
Hallo,

Ich nehme an du mein objektorientierte Programmierung?

Der this-Pointer ist wie du schon richtig vermutet hast etwas was nur bei Klassen zum Einsatz kommt. Der this-Pointer ist eine vordefinierte Variable die nur in Funktionen einer Klasse zur Verfügung steht, und immer auf das Objekt zeigt zu dem diese Funktion gehört. Um ganz genau zu sein würde ein Compiler jeden Zugriff auf eine Klassenvariable oder eine Klassenfunktion über den this-Pointer lösen, auch wenn dieser nicht vom Programmierer explizit angegeben wird.

Bsp.:
C++:
class MyClass {
  public:
    void Do();
    void Bla();
  private:
    int x;
};

Folgende zwei Code-Segmente sind für den Compiler vollkommen gleich, da dieser wie schon oben beschrieben sowieso Zugriffe auf Memberfunktionen und Variablen über den this-Pointer durchführt:
C++:
MyClass::Do()
{
    x = 5;
    Bla();
}
C++:
MyClass::Do()
{
    this->x = 5;
    this->Bla();
}
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

wie hier schon gesagt wurde, bezieht sich "this" auf die Klasse in der man gerade arbeitet. Auf das Schreiben von "this->..." kann man aber verzichten, wenn auf klasseneigene Member oder Methoden zugegriffen wird.
Falls man allerdings die eigene Klasse (bzw. ja eigentlich die Instanz dieser Klasse) einer anderen Klasse oder Funktion bekannt machen muss, geht das nur mit "this", wie im folgenden kleinen Beispiel zu sehen ist:
C++:
class A
{
public:
    void tueDies()
    {
        B b;
        b.tueJenes(this);
    }
};

class B
{
public:
    void tueJenes(A* pA)
    {
        // ...            
    }
};
Gruß
MCoder
 
Ich will ja jetzt nicht komisch rüberkommen aber dieses Thema war schon sehr ausfürlich hier beschrieben worden.
SuFu wäre ganz ok :D
und in google findet man auch sehr viel
MFG
 
Zurück