this
this - ключове слово в деяких об'єктно орієнтованих мовах програмування, яке використовують в методах екземплярів класу, для посилання на сам об'єкт. З'явилося в C++, і було унаслідуване іншими сі-подібними мовами (Java, C#, PHP). Інші мови використовують аналогічні слова: Smalltalk, Object Pascal, Ruby, Python та Objective-C використовують self, а Visual Basic - Me.
Хоча принцип один і той самий у всіх мовах. Для простоти ми будемо казати просто this.
Зміст |
Властивості [ред.]
this зазвичай незмінне посилання чи вказівник який вказує на поточний об'єкт. Деякі мови, такі як Objective-C, дозволяють присвоювати this інші значення, хоча це небажане (deprecated). Така дія може сильно заплутати супровід коду, тому що присвоєння не змінює оригінального об'єкта, а просто замінює об'єкт з яким працює код що йде далі, що може призвести до несподіваної поведінки програми.
Після того як об'єкт правильно побудований, this завжди вказує на нього. Деякі мови вигамають писати його явно, інші використовують простори імен і щоб неявно зробити поля класу видимими всередині його методів. В другому випадку використання this хоча й не є протизаконним, може викликати попередження компілятора. Хоча існують цілком відповідні використання this, наприклад посилання на поля класу, які перекриті локальними змінними з такими ж ідентифікаторами, чи коли метод хоче повернути посилання на свій об'єкт.
this стає ніби додатковим параметром для методу об'єкта. Наприклад, наступний метод в C++
int foo::print (bar x)
має еквівалентну реалізацію в процедурному програмуванні:
int foo_print (foo *const this, bar x)
В деяких мовах, наприклад Python та Perl 5, вимагається явно вказувати параметр this. В такому випадку його навіть не обов'язково називати this чи self; але за неформальною домовленістю про стиль всі називають його self.
Статичні методи в С++ чи Java не пов'язані з екземплярами класу, а з самими класами, і тому не можуть використовувати this, через відсутність об'єкта. В інших мовах, таких як Python, Ruby, чи Smalltalk, статичний метод асоціюється з об'єктом клас, який передаєтьсчя через this. Там такі методи називаються методами класу.
Реалізації [ред.]
C++ [ред.]
В ранніх версіях C++ дозволялась зміна вказівника this; і програміст міг змінювати об'єкт з яким працює метод. Ця властивість була відкинута, і сьогодні this в C++ константа[1]. С++ дозволяє об'єкту самознищення через інструкцію delete this. При виконанні вона деконструює об'єкт, і обнуляє вказівник this.
Python [ред.]
В Python немає ключового слова this, але існує обов'язковий перший параметр всіх функцій. За домовленістю його називають self.
Self [ред.]
Мова програмування Self названа на честь цього оператора.
| На цю статтю не посилаються інші статті Вікіпедії.
Будь ласка, скористайтеся підказкою та розставте посилання відповідно до прийнятих рекомендацій.
|
Зноски [ред.]
- ↑ ISO/IEC 14882:2003(E): Programming Languages - C++. ISO/IEC. 2003.
Посилання [ред.]
- The Design and Evolution of C++ by Bjarne Stroustrup - Addison-Wesley Pub Co; 1st edition (March 29, 1994); ISBN 0-201-54330-3
- More Effective C++: 35 New Ways to Improve Your Programs and Designs by Scott Meyers -- (1995) ISBN 0-201-63371-X
- Java this
