This (programowanie obiektowe)
Z Wikipedii
- Właściwy tytuł tego artykułu to this. Z powodu ograniczeń technicznych tytuł tego artykułu jest nieprawidłowy.
this - w wielu obiektowych językach programowania, słowo kluczowe odnoszące się w niestatycznych metodach klasy do obiektu na rzecz którego dana metoda została wywołana.
W Smalltalku zamiast this używane jest słowo kluczowe self.
Zależnie od użytego języka, this jest interpretowane jako:
[edytuj] Użycie this
Sytuacje w których użycie this jest niezbędne:
- Zwrócenie referencji danego obiektu z metody lub przekazanie jako parametr do innej funkcji/metody np. (przykład w C++):
class Wektor { public: Wektor& operator = ( const Wektor& wzorzec ) { x = wzorzec.x; y = wzorzec.y; return *this; // zwrócenie referencji } private: double x; double y; };
- W celu odróżnienia nazw zmiennych w klasie i nazw parametrów formalnych metody w przypadku gdy są takie same np. (przykład w Javie):
class Wektor { private double x; private double y; public Wektor( double x , double y ) { this.x = x; // rozróżnienie parametrów formalnych konstruktora od zmiennych w klasie this.y = y; } }
[edytuj] Samobójstwo obiektu
W C++ this jest interpretowany jako wskaźnik. Z tego powodu możliwa jest konstrukcja, w której obiekt popełnia samobójstwo. Realizuje się to poprzez wywołanie delete this;
w ciele metody obiektu:
class Samobojca { private int dana; public void zabijSie() { dana = 1; // ok delete this; // dana = 2; // błąd, obiekt juz nie istnieje } }
Aby mechanizm samobójstwa zadziałał bez błędów obiekt musi być stworzony na stercie czyli inaczej mówiąc przy użyciu operatora new
. Należy również pamiętać, że od momentu wykonania delete this;
, obiekt przestaje istnieć i wszelkie odwołania do pól obiektu spowodują naruszenie ochrony pamięci.
Z praktycznego punktu widzenia samobójstwo obiektu jest stosunkowo rzadko spotykane a używanie tego mechanizmu świadczy o błędzie w koncepcji programu.