Seite 1 von 1

this c++

Verfasst: Fr Jun 10, 2011 7:05 am
von gizno82
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

Re: this c++

Verfasst: Fr Jun 10, 2011 9:09 am
von fat-lobyte
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
    }
};

Re: this c++

Verfasst: Fr Jun 10, 2011 9:51 am
von gizno82
Danke schön das hat mir sehr geholfen.

Gruß

gizmo

Re: this c++

Verfasst: Fr Jun 10, 2011 10:38 am
von Xin