double arrow

Ключевое слово this

Нестатические функции-члены класса оперируют с тем объектом типа класса, из которого они вызваны. Ключевое слово this обозначает специальную локальную переменную, доступную в теле любой функции-члена класса, описанной без спецификации static. Переменная this не требует описания и всегда содержит указатель соответствующего объекта.

  • this->имя члена указывает на объект, членом, которого он является.
  • *this представляет собой сам объект и, в зависимости от контекста, может быть лево- или правосторонней величиной
  • this представляет собой адрес объекта.

Пример
class C {
int c1,c2;
public:
void init(int b) { c2=b; c1=b+1; }
C & inc() { c1++; c2++; return *this; }
void *adress() { return this; }
void print() { cout << c1 << c2; }
};
void main(void) {
C a;
a.init(10); a.print(); cout << “ adress=“ << a.adress<< “ inc “ << a.inc().print() << endl;
}
Указатель на объект, для которого вызвана функция-член, является скрытым параметром функции. На этот неявный параметр можно ссылаться явно как на this. В каждой функции класса x указатель this неявно описан как
x* this;
и инициализирован так, что он указывает на объект, для которого была вызвана функция-член. this не может быть описан явно, так как это ключевое слово. Класс x можно эквивалентным образом описать так:

class x { int m; public: int readm() { return this->m; } }; class x { int m; public: int readm() { return m; } };

В языке Java this обозначает не указатель на объект, а собственно объект.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: