Указатель 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();
}
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга