Wskaźnik this w C++
this to specjalny wskaźnik dostępny wewnątrz metod niestatycznych klasy. Wskazuje na obiekt, dla którego aktualnie wywołano metodę lub konstruktor.
Do czego służy this?
Najczęściej używa się go, gdy nazwy parametrów są takie same jak nazwy pól klasy. Pozwala wtedy jednoznacznie wskazać, że chodzi o pole obiektu.
class Owoc
{
public:
double waga;
string nazwa;
Owoc(double waga, string nazwa)
{
this->waga = waga;
this->nazwa = nazwa;
}
};
W tym przykładzie:
this->wagaoznacza pole klasy,wagaoznacza parametr konstruktora,this->nazwaoznacza pole klasy,nazwaoznacza parametr konstruktora.
Dlaczego używa się operatora ->?
W C++ this jest wskaźnikiem, dlatego do odwoływania się do pól i metod obiektu przez this stosuje się operator strzałki:
this->waga = waga;
Niepoprawny jest zapis:
this.waga = waga;
Taki zapis przypomina składnię z języków, w których this jest referencją lub obiektem, ale w C++ this jest wskaźnikiem.
Kiedy this nie jest konieczne?
Jeśli nazwy parametrów i pól są różne, można pominąć this:
Owoc(double w, string n)
{
waga = w;
nazwa = n;
}
Jednak na egzaminie warto rozpoznawać zapis this->, bo często pojawia się w pytaniach dotyczących konstruktorów i metod klas.