Любой метод класса самостоятельно определяет, для какого объекта он был вызван и "видит" другие члены класса без передачи их в качестве параметров. Зададимся вопросом: как это происходит?!
Ответ на этот вопрос не является секретом. Дело в том, что когда функция, принадлежащая классу, вызывается для обработки данных конкретного объекта, этой функции автоматически и неявно передается указатель на тот объект, для которого функция вызвана. Этот указатель имеет фиксированное имя this и незаметно для программиста определен в каждой функции класса.
Указатель this является очень полезным, а иногда просто незаменимым. Например, в следующем коде указатель this позволяет компилятору разобраться в ситуации, когда имя компонента класса совпадает с именем формального параметра, принадлежащего методу:
# include <iostream> using namespace std; class Student // Класс студент. { char name[50]; // имя char surname[50]; // фамилия int age; // возраст public: //Конструктор: Student(char name[],char surname[],int age) { // Компоненты и одноименные параметры: strcpy(this->name,name); strcpy(this->surname,surname); this->age=age; } void Show() { // Здесь this является необязательным, // однако использовать его можно cout << "\nNAME - " << this->name; cout << "\nSURNAME - " << this->surname; cout << "\nAGE - " << this->age; cout << "\n\n"; } }; void main(void) { Student A("Ivan","Sidoroff",25); A.Show(); }