Лекция
Привет, сегодня поговорим про указатель this, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое указатель this , настоятельно рекомендую прочитать все из категории С++ (C plus plus).
Когда функция-член класса вызывается для обработки данных конкретного объекта, этой функции автоматически и неявно передается указатель на тот объект, для которого функция вызвана. Этот указатель имеет имя this и неявно определен в каждой функции класса следующим образом
имя_класса *const this = адрес_объекта
указатель this является дополнительным скрытым параметром каждой нестатической компонентной функции. При входе в тело принадлежащей классу функции this инициализируется значением адреса того объекта, для которого вызвана функция. В результате этого объект становится доступным внутри этой функции. В большинстве случаев использование this является неявным. В частности, каждое обращение к нестатической функции-члену класса неявно использует thisдля доступа к члену соответствующего объекта. Об этом говорит сайт https://intellect.icu . Например, функцию addв классе complexможно определить эквивалентным, хотя и более пространным способом:
void complex add(complex ob)
{this->re=this->re+ob.re;
// или
*this.re=*this.re+ob.re
this->im=this->im+ob.im;}
Если функция возвращает объект, который ее вызвал, используется указатель this.
Например, пусть функция add озвращает ссылку на объект. Тогда
complex&
complex add(complex& ob)
{re=re+ob.re; im=im+ob.im; return *this; }
Примером широко распространенного использования this являются операции со связанными списками.
Пример 1.6.1
//Связанный список
#include <iostream.h>
//Определение класса
class item
{
static item *begin;
item *next;
char symbol;
public:
item (char ch){symbol = ch;} // конструктор
void add(void); // добавить в начало
static void print(void);
};
//Реализация класса
void item : : add(void)
{
this –>next = begin;
begin = this;
}
void item : : print(void)
{
item *p;
p = begin;
while(p != NULL )
{
cout<<p –>symbol<<“ \t ”;
p = p –>next;
}
}
//Создание и просмотр списка
item *item : : begin = NULL; // инициализация статического компонента
void main()
{
item A(‘a’); item B(‘b’); item C(‘c’);
// включение объектов в список
A.add(); B.add(); C.add();
// просмотр списка в обратном порядке
item : : print();
}
В общем, мой друг ты одолел чтение этой статьи об указатель this. Работы впереди у тебя будет много. Смело пиши комментарии, развивайся и счастье окажется в твоих руках. Надеюсь, что теперь ты понял что такое указатель this и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории С++ (C plus plus)
Из статьи мы узнали кратко, но содержательно про указатель this
Комментарии
Оставить комментарий
С++ (C plus plus)
Термины: С++ (C plus plus)