tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
298
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    leooo leooo ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    9
    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!
    Geändert von leooo (13.08.11 um 19:09 Uhr)
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    Keine Ahnung, was du mit abreiten meinst...

    Und this ist nur für Klassen ja.

    Vielleicht wird es mit einem Beispiel verständlicher:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    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ß
     

  3. #3
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    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.:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    
    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:
    Code cpp:
    1
    2
    3
    4
    5
    
    MyClass::Do()
    {
        x = 5;
        Bla();
    }
    Code cpp:
    1
    2
    3
    4
    5
    6
    
     
    MyClass::Do()
    {
        this->x = 5;
        this->Bla();
    }
    Geändert von Steiner_B (13.08.11 um 19:48 Uhr) Grund: Schon wieder zu spät
     

  4. #4
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    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:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    class A
    {
    public:
        void tueDies()
        {
            B b;
            b.tueJenes(this);
        }
    };
     
    class B
    {
    public:
        void tueJenes(A* pA)
        {
            // ...            
        }
    };
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  5. #5
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Ich will ja jetzt nicht komisch rüberkommen aber dieses Thema war schon sehr ausfürlich hier beschrieben worden.
    SuFu wäre ganz ok
    und in google findet man auch sehr viel
    MFG
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

Ähnliche Themen

  1. Zeiger
    Von Kalito im Forum Javascript & Ajax
    Antworten: 10
    Letzter Beitrag: 01.06.11, 14:36
  2. Zeiger auf Zeiger Problem
    Von callis2 im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 31.01.09, 22:45
  3. Antworten: 0
    Letzter Beitrag: 27.12.07, 16:08
  4. Zeiger auf Zeiger nicht verstanden
    Von Razorhawk im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 17.10.05, 12:24
  5. Antworten: 4
    Letzter Beitrag: 08.09.04, 05:28