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
this c++
- fat-lobyte
- Beiträge: 1398
- Registriert: Sa Jul 05, 2008 12:23 pm
- Wohnort: ::1
- Kontaktdaten:
Re: this c++
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:
Gibt folgendes aus:
Wie du siehst ist hier der Zeiger gleich. Du kannst somit auch auf Member und Funktionen innerhalb des Objektes zugreifen:
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;
}
Code: Alles auswählen
0048F8A0 says "Hi!"
Hello, 0048F8A0!
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.
Re: this c++
Danke schön das hat mir sehr geholfen.
Gruß
gizmo
Gruß
gizmo
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: this c++
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.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.