этот указатель
В классе есть очень скрытый специальный указатель — указатель this !
Почему это особенное? Поскольку, пока класс определен, система заранее определит указатель с именем this, указывающий на текущий объект. Хоть мы и не видим этого, мы можем этим воспользоваться.
Например, давайте посмотрим на функцию-член класса часов, код, используемый для установки значения времени:
intClock::SetTime(inth,intm,ints){H=h;M=m;S=s;}
Вы можете видеть, что переменные-члены самого класса Clock — это H, M и S. Им необходимо присвоить значения извне. Чтобы их различать, мы определяем формальные параметры в нижнем регистре. Итак, если мы знаем о существовании этого, мы можем написать так:
intClock::SetTime(inth,intm,ints){this->H=h;this->M=m;this->S=s;}//Это также можно записать как: intClock::SetTime(inth, intm,ints ){(*this).H=h;(*this).M=m;(*this).S=s;}
Видно, что два вышеуказанных метода записи используют скрытый указатель this в объекте, который явно может быть членом этого класса, тем самым четко отличая этот объект от внешних переменных. Фактически, когда объект вызывает свою функцию-член, даже если в программе имеется несколько объектов этого класса, для функции-члена существует только один код. Поэтому, чтобы отличить, какой объект вызывает функцию-член, компилятор также должен. преобразует. Используется в виде функции this->member.