Указатель this языка CPP
Любой метод класса самостоятельно определяет, для какого объекта он был вызван и "видит" другие члены класса без передачи их в качестве параметров. Зададимся вопросом: как это происходит?!
Ответ на этот вопрос не является секретом. Дело в том, что когда функция, принадлежащая классу, вызывается для обработки данных конкретного объекта, этой функции автоматически и неявно передается указатель на тот объект, для которого функция вызвана. Этот указатель имеет фиксированное имя this и незаметно для программиста определен в каждой функции класса.
- Указатель this инициализируется значением адреса объекта, для которого вызван метод, перед началом выполнения кода этого метода.
- Имя this является служебным (ключевым) словом.
- Явно описать или определить указатель this нельзя.
- В соответствии с неявным определением this является константным указателем, т.е. изменять его нельзя, однако в каждой принадлежащей классу функции он указывает именно на тот объект, для которого функция вызывается.
- Объект, который адресуется указателем this, становится доступным внутри принадлежащей классу функции именно с помощью указателя 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(); }
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах