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:
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