Ответ
this — это ключевое слово в C++, представляющее собой указатель на константу (ClassName* const this) на текущий объект, внутри нестатических методов класса. Его тип — ClassName*. В константных методах его тип — const ClassName*.
Основные цели использования:
-
Разрешение неоднозначности имен: Когда имя параметра метода совпадает с именем поля класса.
class Widget { int id; public: void setId(int id) { this->id = id; // this->id относится к полю класса, id — к параметру. } }; -
Возвращение ссылки на текущий объект из метода (для цепочечных вызовов):
class Logger { Logger& log(const std::string& msg) { std::cout << msg; return *this; // Разыменовываем указатель, возвращаем ссылку. } }; // Использование: Logger logger; logger.log("Hello ").log("Worldn"); // Цепочка вызовов -
Передача текущего объекта в другие функции:
void externalProcessor(MyClass* obj); class MyClass { void process() { externalProcessor(this); // Передаем указатель на себя. } }; -
В лямбда-выражениях внутри класса: Для захвата текущего объекта.
class Task { int data; void schedule() { // Захватываем указатель 'this' для доступа к полям. auto job = [this]() { std::cout << data; }; } };
Важные ограничения:
thisнельзя изменить (это константный указатель).thisнедоступен в статических методах класса, так как они не привязаны к конкретному экземпляру.- В конструкторах и деструкторах
thisтакже корректен и указывает на создаваемый/уничтожаемый объект.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶