Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

1.6. Указатель this

Лекция



Привет, сегодня поговорим про указатель 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
создано: 2015-12-20
обновлено: 2021-03-13
132385



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

С++ (C plus plus)

Термины: С++ (C plus plus)