Указатель this языка CPP

Любой метод класса самостоятельно определяет, для какого объекта он был вызван и "видит" другие члены класса без передачи их в качестве параметров. Зададимся вопросом: как это происходит?!

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

  1. Указатель this инициализируется значением адреса объекта, для которого вызван метод, перед началом выполнения кода этого метода.
  2. Имя this является служебным (ключевым) словом.
  3. Явно описать или определить указатель this нельзя.
  4. В соответствии с неявным определением this является константным указателем, т.е. изменять его нельзя, однако в каждой принадлежащей классу функции он указывает именно на тот объект, для которого функция вызывается.
  5. Объект, который адресуется указателем this, становится доступным внутри принадлежащей классу функции именно с помощью указателя this.
  6. Внутри функции - члена класса можно явно использовать этот указатель.

Указатель 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();
}

Рекомендуемые обзоры инструментов

Обзор и отзывы об антидетект браузере Aurorium AI.
Aurorium AI: Обзор и отзывы

Инновационный браузер с поддержкой ИИ

Обзор и отзывы об антидетект браузере Undetectable.
Undetectable Browser: Честный обзор

Бесконечные профили для арбитража

Антидетект браузер Vision: обзор и реальные отзывы.
Браузер Vision: Реальные отзывы

Надежное решение для мультиаккаунтинга

Обзор и отзывы об антидектет браузере Dolphin.
Dolphin {anty}: Обзор функционала

Лидер рынка для арбитражников

📌 Умный подбор сервера: Официальный инструмент проекта DIEG — агрегатор DIEG Finder. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти и сравнить по параметрам подходящий VPS/VDS сервер для любых задач хостинга.
📌 Инфраструктура для разработчиков: Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов читайте здесь.