Прежде чем перейти к перегрузке операторов, необходимо познакомиться с ключевым словом 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 таким образом.