неявно передается указатель на вызывающий объект. Этот указатель называется this.
Рассмотрим программу, в которой описан класс pwr, предназначенный для вычисления степени некоторого числа:
#include
using namespace std;
class pwr
{
double b;
int e ;
double val;
public:
pwr(double base, int exp);
double get_pwr() { return val; }
};
pwr::pwr(double base, int exp)
{
b = base;
e = exp;
val = 1;
if(exp==0) return;
for( ; exp>0;
exp -> val = val * b;
} см.продолжение
int main() продолжение
{ pwr x(4.0, 2), y(2.5, 1), z(5.7, 0);
cout << x.get_pwr() << " ";
cout << y.get_pwr() << " ";
cout << z.get_pwr() << "\n";
return 0; }
Внутри класса к функции-члену можно обращаться напрямую, не используя объекты и название класса. Таким образом, внутри конструктора pwr() оператор b = base; (сокращённая форма) означает, что переменной b, принадлежащей вызывающему объекту, присваивается значение переменной base.
Однако тот же самый оператор можно переписать иначе (в расширенной форме):
this -> b = base;
Указатель this ссылается на объект, вызывающий функцию pwr(). Т.о., выражение this->b ссылается на переменную b, принадлежащую текущему объекту. Например, если функция pwr() вызвана объектом х (в объявлении х(4.0, 2)), то указатель this в предыдущем операторе будет ссылаться на объект х. Впрочем, этот оператор можно записать в сокращенном виде, не используя указатель this.