Wskaźnik this w C++

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

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->waga oznacza pole klasy,
  • waga oznacza parametr konstruktora,
  • this->nazwa oznacza pole klasy,
  • nazwa oznacza 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.