Другие языки программирования и технологии

классы на C++

внутри класса this всегда указывает на объект класса. По большому счету он не нужен в явном виде, потому что внутри класса и так есть доступ ко всем переменным-членам и функциям-членам объекта класса.
А за пределами класса, есть либо объект, либо указатель на него. Взять указатель на объект - это проблема? А из указателя на объект тоже нужно изголяться, чтобы получить тот же самый указатель?
class cl
{
class cl * func() { return this; }
}

main ()
{
cl a, *b;
b = a.func(); // Извращение
b = &a; // Получаем тоже самое, только быстрее
}

// Смысл делать функцию, возвращающую указатель на объект? Без объекта эту функцию не вызовешь, а где есть объект, там же можно взять указатель на него. Небольшая тайна: В любой нестатический метод класса неявным образом передается указатель на этот объект. Это делается на месте вызова метода. Внутри класса он имеет идентификатор this. Именно благодоря ему методы знают, где лежит этот объект, и гед лежат переменные члены этого объекта.

class foo
{
public:
void func();
int m_Value;
};

void foo::func()
{
m_Value; // на самом деле это this->m_Value;
}

main()
{
foo f;
f.func();// если это место рассмотреть под микроскопом (дизасемблером) , то можно увидеть, что адрес f будет помещен в регистр ecx, а на месте метода, тот будет доставать m_Value через этот же регистр. Вывод - ecx содержит this
}
Gabiden Januzakov
Gabiden Januzakov
21 360
Лучший ответ
class cl * cl::fuc()
{
return this;
}