this c++

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

this c++

Beitrag von gizno82 » Fr Jun 10, 2011 7:05 am

Hallo

Ich arbeite mich gerade in die objektorientierte Programmierung mit c++ ein.
Dabei hänge ich gerade an einer Sache und zwar ist mir nicht ganz klar was das
Schlüsselwort this für eine Funktion hat. Es wäre sehr nett wenn mir jemand dazu
eine Erklärung geben könnte.

Gruß

gizmo

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: this c++

Beitrag von fat-lobyte » Fr Jun 10, 2011 9:09 am

this ist der Zeiger auf die Objektinstanz, mit der die Funktion gerade ausgeführt wird.

Es ist nur Gültig innerhalb der nicht statsischen Methoden der Klasse, und gibt einen Zeiger auf das Objekt selbst zurück:

Code: Alles auswählen

#include <iostream>

struct A{
    void hello()
    {
        A* this_ptr = this;
        std::cout<<a_ptr<<" says \"Hi!\"\n"<<'\n';
    }
};

int main()
{
   A a;
   A* a_ptr = &a;

   a.hello();
   std::cout<<"Hello, "<<a_ptr<<"!\n";

    return 0;
}
Gibt folgendes aus:

Code: Alles auswählen

0048F8A0 says "Hi!"
Hello, 0048F8A0!
Wie du siehst ist hier der Zeiger gleich. Du kannst somit auch auf Member und Funktionen innerhalb des Objektes zugreifen:

Code: Alles auswählen

struct A{
    int m;

    void hello()
    {
        int val = this->m;
        int val2 = m; // beachte! beide anweisungen sind äquivalent


        std::cout<<a_ptr<<" says that m is "<<val<<'\n';
    }


    void say_hello()
    {
        this->hello();
        hello(); // beachte! beide anweisungen sind äquivalent
    }
};
Haters gonna hate, potatoes gonna potate.

gizno82
Beiträge: 46
Registriert: Sa Dez 19, 2009 4:03 pm

Re: this c++

Beitrag von gizno82 » Fr Jun 10, 2011 9:51 am

Danke schön das hat mir sehr geholfen.

Gruß

gizmo

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: this c++

Beitrag von Xin » Fr Jun 10, 2011 10:38 am

Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten