Когда компонентная функция вызывается для конкретного объекта, то этой функции автоматически и неявно передается в качестве параметра указатель на тот объект, для которого она вызывалась. Этот указатель имеет специальное имя и определен как константный в каждой функции класса.

<имя класса>*const this = <адрес объекта>

В соответствии с описанием этот указатель менять нельзя, однако в каждой принадлежащей классу функции он указывает на тот объект, для которого данная функция вызывается. То есть указатель this является дополнительным (скрытым) параметром каждой нестатической компонентной функции. Этот параметр используется для доступа к полям конкретного объекта. Для иллюстрации использования указателя this добавим в приведенный класс monstr новый метод, возвращающий ссылку на более здорового из двух монстров, один из которых вызывает метод, а другой передается ему в качестве параметра. Метод необходимо поместить в секцию public
Пример 1

monstr &the_best(monstr &M)
{
  if(health > M.get_health())
    return *this;
  return M;
}
monstr Vasia(50), Super(200);
/* Новый объект Best инициализируется значениями полей Super */
void cure(int health, int ammo)
{
  this-> health+=health; /* использование this */
  monstr::ammo+=ammo; /* использование операции :: */
}

Использование параметра this не дает ощутимого преимущества при программировании, так как данные конкретного объекта уже доступны в принадлежащих классу функциях по именам. Удобным и необходимым он становится, когда в теле принадлежащей классу функции требуется явно задать адрес, для которого она была вызвана.