Программирование на C и C++

Онлайн справочник программиста на C и C++

Указатель this

Прежде чем перейти к перегрузке операторов, необходимо познакомиться с ключевым словом this языка С++, которое является существенным ингредиентом многих перегруженных операторов.

Всякий раз, когда вызывается функция-член, автоматически передается указатель на объект, вызывающий данную функцию. Можно получить доступ к этому указателю, используя this. Ука­затель this служит неявным параметром всех функций-членов. (Функции-друзья не имеют указате­ля this.) Например, в операторе:

оb.f();

функции f() автоматически передается указатель this, указывающий на объект ob.

Как известно, функции-члены имеют непосредственный доступ к данным класса. Например, если задан следующий класс:

class cl {
int i;
// ...
};

то функция-член может присвоить переменной i значение 10, используя следующую инструкцию:

i = 10;

Фактически эта инструкция является сокращенной записью следующий инструкции:

this->i = 10;

Для того, чтобы увидеть, как работает указатель this, рассмотрим следующую короткую программу:

#include <iostream.h>
class cl {
int i;
public:
void load_i(int val) { this->i = val; } // то же самое, что и i = val
int get_i() { return this->i; } // то же самое, что и return i
};
int main ()
{
cl o;
o.load_i(100);
cout << o.get_i();
return 0;
}

Эта программа выводит на экран число 100.

Хотя рассмотренный пример достаточно тривиален — фактически никто не использует указа­тель this таким образом.