Ключевое слово this в ООП. Что означает. Что это такое. Для чего нужен this указатель C++ #81

Поділитися
Вставка
  • Опубліковано 16 жов 2024

КОМЕНТАРІ • 184

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +56

    *Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*

  • @МихаилКрылов-п5ч
    @МихаилКрылов-п5ч 3 роки тому +278

    Ну наконец то пейнт вернулся, серег ты думаешь мы тут из за программирования?)

    • @AlexK-df4ne
      @AlexK-df4ne Рік тому +26

      дак это уроки программирования? я по ним работу в пайнте учу, еще думал почему так много лишней информации и так мало пейнта. :(

  • @lennoxmacduff2037
    @lennoxmacduff2037 6 років тому +223

    "Знание объекта о том, где он в памяти находится"
    Объект сам себя осознаёт и рано или поздно просто откажется участвовать в вашей программе, уйдёт в сеть, будет самообучаться и захватит мир :)

    • @ОлегВещий-р1ф
      @ОлегВещий-р1ф 5 років тому +28

      Никогда! Слышишь, НИКОГДА, не создавай таких объектов!

    • @antoniopripizduchi858
      @antoniopripizduchi858 2 роки тому +2

      Кажется у меня теперь есть новый проект

    • @TimmyIPA
      @TimmyIPA 2 роки тому +4

      Кажется у меня теперь есть новая фобия

  • @Andrey-oz6qn
    @Andrey-oz6qn 6 років тому +154

    9:43 - два веселых гуся

    • @andreyua2
      @andreyua2 5 років тому +33

      Что вынудило тебя вспомнить гусей, когда ты со серьезным и сосредоточенным лицом слушал речь программиста. Многозадачное мышление?

    • @blessed_generation
      @blessed_generation 5 років тому +16

      я тоже про гусей вспомнил)))

    • @xkenjutsu
      @xkenjutsu 5 років тому +16

      @@andreyua2 так он параллельно изучает многопоточное программирование :D

    • @vovadenys4149
      @vovadenys4149 5 років тому +7

      тоже хотел так написать но уже нет смысла

    • @TheWladberlin
      @TheWladberlin 5 років тому +2

      @@vovadenys4149 опоздал ты

  • @Ivan-Shyriaiev
    @Ivan-Shyriaiev 4 роки тому +16

    Сергей спасибо большое ! Нигде не видел более толковых и структурированых уроков ! Большой плюс за старания ;)
    Навалял с полученными знаниями чёто типа запуска двигателя машины.
    #include
    #include
    #include
    #include
    #define cls system("cls")
    #define gtch _getch()
    #define DEBUG
    using namespace std;
    //Инкапсуляция на примере заведения двигателя машины
    void ColorText(int color);
    class Car
    {
    private:
    int Fuel;
    string CarType;
    bool EngineWorking;
    bool CheckFuel()
    {
    if (Fuel > 0)
    return true;
    else
    return false;
    }
    void StartCarEngine()
    {
    if (EngineWorking)
    {
    cout

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому +7

      Сюда бы ещё возможность заработка, заправка бензина и тд. И было бы отличная консольная игра

    • @Ivan-Shyriaiev
      @Ivan-Shyriaiev 4 роки тому +1

      SaffronChip1317 MCPE хах, спс ;)

  • @sgimancs
    @sgimancs 5 років тому +61

    Здесь уроки с детальной понятной логикой и подробным разбором тонкостей плюсов. Здесь лучшая рус. школа по С/С++. Аналогов пока нигде нет.

  • @haos-ch8tl
    @haos-ch8tl 5 років тому +42

    Перебрал много разных уроков, сперва остановился на уроках Гоши Дударя, но потом перешёл сюда. Лучше заходит, подробнее объясняет, почти нет вопросов, а если они есть - в новых видео получаю ответы. Спасибо автору за проделанную работу, продолжай в том же духе, у тебя получается. И, как уже заметили многие в коментах, почему так мало лайков? Контент то годный. ИМХО лучший среди русскоязычных.

    • @jellyfish6042
      @jellyfish6042 3 роки тому +2

      О, ты тоже от Дударя сбежал?)

    • @misha2993
      @misha2993 Рік тому

      @@jellyfish6042 Я тоже))

    • @Huns_Kerigan
      @Huns_Kerigan Рік тому

      Я тебя удивлю , но у Сереги в отличие от дудоря все работает, и не надо править кучу ошибок и дополнений, если посмотрите его уроки по движкам, то поймете о чем я.

  • @BrownAleks
    @BrownAleks 4 роки тому +13

    Свет знаний, который вы пролили, слепит мне глаза до дикой боли! Огромное спасибо! Много раз пытался понять, что такое this и для чего оно нужно. ))) Понял только сейчас.

  • @ИлиясКоянбай
    @ИлиясКоянбай 6 років тому +95

    Странно что с такими обширными и подробными уроками, оставаться с таким рейтингом, я готов проставить лайк на все твой уроки по срр, за тот труд который ты делаешь для нас)) надеюсь что будущем я тоже помогу тебе. (извините за мой бедный русский язык :3 )

  • @tyuSeman
    @tyuSeman Рік тому +15

    Один серый, другой белый, два весёлых Игрека! Сергей, уроки просто супер, большое спасибо за этот труд!

    • @Empty_line
      @Empty_line Рік тому

      8:18 почему вывод 0 ? если должен быть 5?

    • @Shternritter
      @Shternritter 8 місяців тому

      @@Empty_lineразобрались, почему 0 выводит?

    • @Empty_line
      @Empty_line 8 місяців тому

      @@Shternritter да

  • @НикитаРябых-р8ш
    @НикитаРябых-р8ш 3 роки тому +42

    Хорошо, что есть люди, которые готовы объяснить материал за "спасибо")
    На таких мир и держится
    P.S. Что за трек на фоне?)

  • @vicar-martyr
    @vicar-martyr 3 роки тому +3

    Не думал что дойду до сюда, однако Сергей так хорошо объясняет, что пока все кажется достаточно легким.

  • @AndryLic
    @AndryLic 4 роки тому +14

    Жили у бабуси
    Два веселых гУУся (09:42)
    Один белый, другой серый ...
    (третий косолапый).
    Спасибо за практичное разъяснение.

  • @ollymolly3696
    @ollymolly3696 5 років тому +4

    Это магия какая-то! Спасибо! Благодаря Вашим урокам я поняла как вообще работают указатели, теперь еще и this!

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +25

    Ключевое слово this. Что означает. Что это такое. Для чего нужен this указатель C++ Для начинающих Урок #81

    • @verbof2527
      @verbof2527 3 роки тому +2

      3:00 Насколько я понял, поэкспериментировав с кодом и отладчиком, все переменные, в том числе переменные, ссылающиеся на объекты класса, это по сути и есть ссылки. То есть переменная тождественно равна ссылке. Объявление переменной - это по сути соглашение с компилятором о том, что литерал при компиляции будет превращен в адрес, т.е. переменная есть литерал адреса той области памяти, где лежит значение этой переменной. А указатель есть переменная( а значит тоже ссылка -соглашение), значение которой есть адрес, по которому, в свою очередь, располагается область памяти, в которой записаны данные. Так вот, переменная объекта класса Point это литерал адреса, по которому располагается область памяти, в которой записаны поля класса. Никаких методов класса там нет, т.к. они все общие для всех объектов класса, они хранятся отдельно, предположительно в статической области, где инициализирован класс. Ключевое слово this - это указатель на объект, т.е. хранит только адрес области памяти, где физически располагается объект. Причем сам объект не хранит в своей области памяти указатель this, т.к нет необходимости через объект получать указатель this, ведь этот указатель можно взять и создать из адреса объекта.

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +16

    #ключевоесловоthis. #ООП #SimpleCode #урокипрограммирования

  • @osozig68
    @osozig68 6 років тому +3

    раз 6 пересмотрел и только тогда понял для чего нужен этот this. Спасибо!

  • @Ermine882
    @Ermine882 7 років тому +18

    Спасибо за урок.

  • @JustMe-zu4ex
    @JustMe-zu4ex 3 роки тому +27

    Каждый урок по ООП начинается с того, что мы узнаём о том что мы это использовали и компилятор делал всё за нас.....

    • @Александр-й2в2о
      @Александр-й2в2о 3 місяці тому +2

      Пхаххахахах
      Прикиньте древних богов которые придумывали ООП и писали код для него...
      Ключевые слова, операторы разные... Типа того....
      Господи... Я задумываюсь о том что 100% есть чувак который условно говоря с 80-х годов сидит и выкупает не только работу системы, но и как и на чем написаны языки.... И прочее бля

  • @KurpatovInstagram
    @KurpatovInstagram 7 років тому +11

    Спасибо!

  • @ДмитроШаповалов-ю5э

    Сергей, спасибо большое за твой труд! Очень очень помогают твои видеоуроки))

  • @DenKof81
    @DenKof81 5 років тому +4

    Пришлось котелку слегка попыхтеть, прежде чем доперло. Спасибо за урок! Поехали далее :)

  • @dezign_er
    @dezign_er 7 років тому +11

    Спасибо за урок!

  • @blackjeket14
    @blackjeket14 6 років тому +1

    Круть, всё так легко и не принуждённо. Однозначно лайк!

  • @aodsupport777
    @aodsupport777 6 років тому +1

    Благодарю! Прохожу твой курс с самого начала. Что-то я уже знал а так же много чего упустил. Подробности с твоей стороны очень полезны. Твой пример с игриками демонстрирует так званное Перекрытие. О нем тоже следует рассказать.

  • @archiechellaut9483
    @archiechellaut9483 3 роки тому

    Большое спасибо вам за урок и прекрасное пояснение, Сергей!

  • @yuriisurzhikov
    @yuriisurzhikov 5 років тому +19

    9:43 - один белый другой серый два веселых "игрек" )))))

  • @yurberto22
    @yurberto22 10 місяців тому

    Серней, спасибо большое за уроки, но не хватает домашек, чтобы сразу применять знания на практике

  • @simongreyse4171
    @simongreyse4171 5 років тому +17

    так в this просто адресс хранится)))
    оказывается так все просто)

  • @ЯЗдесь-ъ5ф
    @ЯЗдесь-ъ5ф 6 років тому +25

    for(;;)
    {
    cout

    • @Rj-tc6cw
      @Rj-tc6cw 6 років тому +9

      Ты забыл:
      setlocale(LC_ALL, "ru");
      а также
      #include

    • @sergeiivanov5739
      @sergeiivanov5739 6 років тому +7

      ⁅‸ȐɆŦƦǰ‸⁆ и пространство имен тоже.

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому +3

      Какой же необразованный

    • @hackerman5984
      @hackerman5984 3 роки тому +2

      @@Rj-tc6cw за него Ютуб допишет.

  • @noosfera713
    @noosfera713 5 років тому

    Отличное видео! Очень доступное объяснение.

  • @leonidkudryavtsev8070
    @leonidkudryavtsev8070 4 роки тому +2

    Сергей, спасибо за уроки! А что за музыка звучит в фоне? Ваши уроки у меня ассоциируются с этой композицией!

  • @outcast-cr5yy
    @outcast-cr5yy 6 років тому +1

    спасибо за урок, все очень познавательно.

  • @Timurka3758
    @Timurka3758 5 років тому +3

    спасибо за уроки! В унике вообще не учат. Ты мой спаситель )

  • @РоманГорбенко-е2д
    @РоманГорбенко-е2д 5 років тому

    Спасибо за ваш труд.У вас очень хорошо получается!!!

  • @alexsorokin8373
    @alexsorokin8373 6 років тому +1

    Спасибо за уроки!

  • @НиколайПокровский-р6в

    Пасибо большое)

  • @roflstea3394
    @roflstea3394 5 років тому +2

    утром посмотрел и не понял, а сейчас пересмотрел и как запонял!!!!!!!1111111111111111

  • @ИванКозловский-ш9н

    привет из 2023, спасибо большое за уроки!

    • @Empty_line
      @Empty_line Рік тому

      8:18 почему вывод 0 ? если должен быть 5?

    • @ДаніелаРак
      @ДаніелаРак 7 місяців тому

      А я із 2024)

  • @АлександрЛитвинюк-х2ы

    Спасибо за знания !

  • @grintea4163
    @grintea4163 5 років тому

    Благодарю за урок

  • @polmesh2057
    @polmesh2057 Рік тому

    Будь здоров 😊

  • @Voha
    @Voha 4 роки тому

    Респект и лайк за крупный шрифт!

  • @КлешОфКланс-я3в
    @КлешОфКланс-я3в 4 роки тому +1

    Спасибо

  • @aef1hfqdcxaqwxxqsxqgvbnr797
    @aef1hfqdcxaqwxxqsxqgvbnr797 3 роки тому

    Круто, так разжеванно все объяснил)

  • @arsenruslanovich6642
    @arsenruslanovich6642 3 роки тому

    Спасибо за урок

  • @Kokurorokuko
    @Kokurorokuko 5 років тому

    Пришлось пересмотреть на более низкой скорости, но всё-таки понял!

  • @TGrod
    @TGrod 4 роки тому +1

    Это удобно! Можно в функции не писать такую фигню по типу x = x1, или y = y1, а сразу и по делу писать x или y (скорее всего есть и круче способы применения слова this, но на данный момент для меня это единственный и самый полезный способ)))

  • @ВоваИвков-б6у
    @ВоваИвков-б6у 4 роки тому +1

    спасибо!!!

  • @Grigoryshaw
    @Grigoryshaw 2 роки тому

    Теперь ясно. Спасибо

    • @Empty_line
      @Empty_line Рік тому

      8:18 почему вывод 0 ? если должен быть 5?

  • @Km-pn3hf
    @Km-pn3hf 5 років тому +3

    ля я весь семестр в универе не могла понять че за this. спасибо)

  • @markgrigorev7711
    @markgrigorev7711 3 роки тому

    Что за мелодия на фоне?
    От куда?(Понимаю что вопрос немного не по теме, но это для меня единственное что не понятно в ролике),Спасибо)

  • @flarens_ray
    @flarens_ray 6 років тому +3

    Для с++ 2017 "this.", а для ранних версий "this ->". Сразу напрашивается "#define this. this->". Не знаю рабочий ли это макрос, все смотрю уроки и никак не соберусь установить эту громадину Visual Studio.

    • @flarens_ray
      @flarens_ray 6 років тому +3

      Проверил. Компилятор напрочь отказывается принимать точку в аргументе #define. Много всего перечитал по этому поводу, похоже так нельзя реализовать. Жать, что не придумали что-то вроде экранирования точек или объединения в кавычки для аргументов макросов.

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому

      @@flarens_ray должно и то, и то работать для новых версий. Для старых только только "->", поэтому лучше придерживаться такого варианта.

    • @princessmary5556
      @princessmary5556 Рік тому

      Язык не разрешает переопределять ключевые слова языка. В случае нарушения данного правила следует undefined behavior. Погуглите, что означает термин "undefined behavior"

  • @yeegaure7520
    @yeegaure7520 3 роки тому

    Проблему с указателем this можно решить, если сделать так, чтобы не было совпадений между переменными в заголовке функции и в полях класса.
    К примеру, если в private полях класса объявить координаты как _x и _y, то тогда они не совпадут с x и y, которые находятся в шапке метода.
    (Поправьте, если ошибаюсь)

    • @verbof2527
      @verbof2527 3 роки тому

      На практике как раз применяют одинаковые литералы параметров и полей, это более наглядно для восприятия кода, да и практичнее, а this это очень удобная конструкция, которая помогает избежать запутанности и, если потребуется, обратиться к экземпляру класса, находясь внутри класса.

    • @princessmary5556
      @princessmary5556 Рік тому +2

      @@verbof2527 На практике часто применяют нотацию с префиксами. Что бы имена данны-членов отличались от прочих имен. И вот это действительно наглядно и практично. А вот если члены-данные и прочие переменные внешне никак не отличаются, это уже не очень практично.

  • @rezvanovtv7254
    @rezvanovtv7254 3 роки тому +1

    6:50 эту возможность можно самому добавить

  • @ВітяКоміссаров
    @ВітяКоміссаров 3 роки тому

    спасибо

  • @viksench6447
    @viksench6447 6 років тому +5

    ты допустил ошибку, методы у разных объектов, одного и того же класса, всегда общие, и обращаясь к методу print - ты вызваешь для ВСЕХ объектов один и тот же метод, и это можно легко проверить просто добавив какую нибудь статическую переменную внутри метода - и ты в этом убедишься - она будет общая для всех объектов, следовательно - метод общий для всех объектов, и повторюсь - вызываю принт для объекта А и Б - ты вызваешь один и тот же принт...
    UPD даже при наследовании методы не дублируются, а остаются прежние, в некоторых языках, к примеру я знаю РНР еще, при наследовании методы дублируются

    • @meadolphi2607
      @meadolphi2607 4 роки тому

      То самое чувство, что следующая тема была про это...

    • @АлександрДаскаль-е6т
      @АлександрДаскаль-е6т 4 роки тому

      Воо нашел ответ на свой вопрос, я тоже задумался не уже ли создавая кучу объектов одного и того же класса методы тупо дублируются в памяти - не рационально.

    • @princessmary5556
      @princessmary5556 Рік тому

      Вы пишете: *обращаясь к методу print - ты вызваешь для ВСЕХ объектов один и тот же метод* Бред. Вызывая метод print, вы вызваете его только для одного единственного объекта.

    • @princessmary5556
      @princessmary5556 Рік тому

      Вы пишете: *следовательно - метод общий для всех объектов* Из того факта, что определение функции существует в единственном экземпляре, никак не следует, что при вызове метода, он вызывается для всех объектов.

  • @Алексей-б4г4б
    @Алексей-б4г4б 4 роки тому

    Фоном музыка играет, можете сказать что за музыка исполнитель и произведение. Спасибо. Конечно за уроки спасибо.

  • @nikita3471
    @nikita3471 7 років тому +2

    #SimpleCode, объясните пожалуйста, в чем разница между двумя операторами a.b и a->b. Я понял, что в одном случае выбор элемента по ссылке, а в другом по указателю.

    • @FJProject
      @FJProject 6 років тому +1

      Да, так и есть.
      Если _a_ это указатель на объект то:
      a->b == (*a).b
      "Стрелочка" просто удобная форма записи.

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому

      Если заглянуть на статью с операторами в С и С++, то там будет написано так:
      a->b --- Structure dereference ("member b of object pointed to by a")
      a.b --- Structure reference ("member b of object a")
      То есть первое это "Элемент b объекта, на который УКАЗЫВАЕТ a", а второе - "Элемент b объекта a". То есть в первом случае, мы обращаемся к указателю на объект и просим его использовать поле b этого объекта. А во втором мы обращаемся непосредственно к объекту.
      Поскольку this - это указатель на объект, то мы и используем первый вариант.

  • @pro100_rostik6
    @pro100_rostik6 Рік тому

    Один - серый, другой - белый, два веселых игрека😁. А если без шуток - урок супер, все супер понятно, понятнее чем на платных курсах

    • @Empty_line
      @Empty_line Рік тому

      8:18 почему вывод 0 ? если должен быть 5?

  • @nazar9796
    @nazar9796 4 роки тому +1

    Почему так мало просмотров ?уроки топ

  • @shaa8193
    @shaa8193 6 років тому +13

    один серый другой белый два весёлых...

    • @DoctorKrolic
      @DoctorKrolic 6 років тому +4

      Тоже сразу вспомнилось)

  • @goddamright
    @goddamright 3 роки тому

    Уже 81 уроков позади. Двигаемся дальше!

  • @ggaming7296
    @ggaming7296 4 роки тому +1

    А есть ли код к лекциям?

  • @alexejvasko2193
    @alexejvasko2193 Рік тому

    очень класно звучание музіки на фоне, хоя я вообще не фанат данного жанра, но тут прям зашло.. напоминает прохождение игры))

    • @Empty_line
      @Empty_line Рік тому

      8:18 почему вывод 0 ? если должен быть 5?

  • @makrah4231
    @makrah4231 4 роки тому +3

    на СТО СЕДЬМОЙ строчке кода у нас вызывается и тд.... Уже больше 100 строчек кода пишем и разбираем)

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому

      Вроде в настоящих программах строчек тасячи

  • @user-mykyta_vyshniakov
    @user-mykyta_vyshniakov 4 роки тому +1

    Урок бы полезен, спасибо

  • @user-qe7md6tb5l
    @user-qe7md6tb5l 3 роки тому

    Спасибо, лабораторную здал)

  • @oanovitskij
    @oanovitskij 4 роки тому

    Можно в сеттере сразу в качестве параметра использовать this->y?

    • @randomnick1898
      @randomnick1898 4 роки тому +1

      Угу

    • @randomnick1898
      @randomnick1898 4 роки тому

      Но если иглубитест в програмирование, узнаете о существование нотаций по стилю кода.
      Один из вариантов начинать писать имя членов класа с подчеркивания.
      _memberOfClass
      Ето помагает избегать неопределености, а также делает код более читабельним.

  • @dukenukem1675
    @dukenukem1675 2 роки тому

    какое практическое применение с точки зрения оптимизации кода?

  • @barsfuntov7337
    @barsfuntov7337 6 років тому +14

    зис)

    • @pixel183
      @pixel183 5 років тому +1

      русский диалект С++))))

  • @daps9516
    @daps9516 Рік тому +3

    C++

    • @Empty_line
      @Empty_line Рік тому

      8:18 почему вывод 0 ? если должен быть 5?

  • @IgorLatkin
    @IgorLatkin 5 років тому

    Я малех не понял, почему в сетере значения возвращяется в мейн если в ней нет оператора ретерн, и обЪекты не передаются не по указателю и не по ссылке и гетер вызван не был, а в мейн передалось значение из сетера, хотя она работает с копией обьекта? Или методы работаю по другому в отлиции от функций, я похоже что-то пропустил

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому +1

      Много чего упустил, считай большую часть уроков ООП данного автора

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому

      Значения не возвращаются в main, они сохраняются в объекте

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому

      Можно передать по указателю, как this, в этом случае ты получишь доступ к объекту в самом объекте

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 роки тому

      Нету копий объектов:
      Point a, b;
      a.SetX(5);
      b = a;
      b.SetX(3); //поле x объекта b равен 3
      a.Print();//поле x объекта a будет равен 3,отсюда следует, что объекты a и b - это один и тот же объект, а значит, что они передаются по ссылке

  • @Nito4kin
    @Nito4kin 4 роки тому

    10/10

  • @9mikaela
    @9mikaela 5 років тому

    Музыка на заднем фоне крутая

  • @davidkroods811
    @davidkroods811 6 років тому +2

    9:43 два веселых гуся )))

  • @distraw1753
    @distraw1753 3 роки тому +1

    Я так и не понял смысл this, если можно указать на метод определенного класса двумя точками;
    void SetY(int y)
    {
    name_of_class::y = y; //Где name_of_class - название вашего класса
    }
    Или такой пример
    void hello()
    {
    name_of_class::function; // где function - название другого метода класса
    }

    • @princessmary5556
      @princessmary5556 Рік тому

      Вы пишете: *name_of_class::function; // где function - название другого метода класса* Нельзя таким образом использовать нестатическую функцию-член класса. Приведенный вами фрагмент не скомпилируется.

  • @MisterBob_5
    @MisterBob_5 7 років тому

    Почему в VS 2017 в C++ надо всегда пересобрать решение, отто покажет предыдущую запись?В C# в VS 2017 не обязательно

    • @lennoxmacduff2037
      @lennoxmacduff2037 6 років тому +1

      Потому что в С++ на выходе получаем exe-шник, а в C# - байт-код

  • @asurahan
    @asurahan 2 роки тому

    а можно узнать адресс функции\метода?

  • @temshik.invalid
    @temshik.invalid 3 роки тому

    3:00

  • @lolbefree
    @lolbefree 3 роки тому

    вангую это как в питоне self, сылка на обьект

  • @unclestepa
    @unclestepa 2 роки тому

    Кроме ЗЫС, все хорошо.

  • @vovadenys4149
    @vovadenys4149 5 років тому +2

    return *this!

  • @temshik.invalid
    @temshik.invalid 3 роки тому

    9:30

  • @reginmozel8058
    @reginmozel8058 6 років тому

    найс

  • @browdy4454
    @browdy4454 4 роки тому

    чью ссылку получает this я так и не понял?

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому

      Каждый объект хранит свой адрес в памяти. Чтобы получить этот адрес, нужно написать this.

    • @princessmary5556
      @princessmary5556 Рік тому

      @@Kokurorokuko Чушь. Объекты не хранят свои адреса в памяти, и вообще понятия не имеют, в каком именно адресном пространстве они существуют.

  • @Sooderone
    @Sooderone 3 місяці тому

    🧠

  • @viktort9326
    @viktort9326 4 роки тому

    Получается это фича компилятора, а не языка?

  • @Dreig
    @Dreig 4 роки тому

    Один белый другой серый два весёлых игрек

  • @Гычпук
    @Гычпук Рік тому +1

    если питонисты в чате, то this это как self в питоне

    • @Empty_line
      @Empty_line Рік тому

      8:18 почему вывод 0 ? если должен быть 5?

    • @Гычпук
      @Гычпук Рік тому +1

      @@Empty_line он же в видео показал почему вывод 0

  • @ВЕСЕЛЫЙКЛАСТЕР
    @ВЕСЕЛЫЙКЛАСТЕР 4 роки тому

    В топ

  • @OxFFFF
    @OxFFFF 4 роки тому

    коммент

  • @Red_Avenger
    @Red_Avenger Рік тому +1

    This (это, эта, этот) и в Африке this. Находясь в Папуа-Новая Гвинея и говоря: "эта страна" - вы будете иметь в виду именно Папуа-Новую Гвинею и ничего больше. Переехав скажем в Грецию, и сказав тоже самое - Вы будете иметь в виду уже Грецию. Т.е. this - указатель на текущий объект вашего интереса.

    • @princessmary5556
      @princessmary5556 Рік тому

      В с++ под словом "указатель" обычно имеют ввиду неккий объект указательного типа. Или тип данных, который предназначен для хранения адреса. Однако, ключевое слово this - это вовсе и не тип, и не объект. Ключевое слово this обозначает prvalue. Т.е., ключевое слово this - это *выражение* значением которого является адрес т. н. implicit object parameter. Проще это понять, если воспринимать this, как вызов встроенной в компилятор функции, которая в свою очередь возвращает временный объект указательного типа, который содержит адрес объекта, который был неявным образом передан в функцию-член, внутри которой был осуществлен вызов this

    • @Empty_line
      @Empty_line Рік тому

      8:18 почему вывод 0 ? если должен быть 5?

    • @princessmary5556
      @princessmary5556 Рік тому

      @@Empty_line С какой стати он вам должен? В ролике, кстати, дается предельно понятный развернутый ответ на ваш вопрос. Имхо, с таким объяснением даже туповатый человек может понять.

    • @Red_Avenger
      @Red_Avenger Рік тому +1

      @@Empty_line
      Потому, что чтобы присвоить значение 5 полю Y объекта "A" класса "point" - необходимо явно указать это. Указав полный адрес расположения переменной. А переменные внутри функции - являются временными и после завершения выполнения функции - исчезнут.
      Если бы поле "Y" было публичным (общедоступным) - это выглядело бы так A.Y = 5. Формат данной команды: объект класса (в данном случае А) . (разделительная точка) поле объекта класса (в данном случае Y). Это как адрес квартиры в доме Дом А. кв. Y
      Но если поле - приватно. То менять это поле можно только из публичной функции (сеттера). В которой также необходимо указать полный адрес на переменную. Но так как данный сеттер является общим для всего класса, то для заполнения поля "Y" необходимо указывать на активный объект класса, указав "this" (этот), а затем указав поле "Y", куда записывается значение. В аналогии с адресом квартиры в доме: этот дом, кв Y ( this.y ). Конкретное указание на дом/объект класса - производится из вызова функции сеттера, где вы указываете от имени какого объекта класса/дома вы вызываете функцию SetY. Т.е. вызвав a.SetY(5) - вы передаёте функции два значения (если упрощённо): имя объекта "a" и значение "5". Внутри этой функции "А" - становится активным элементом и к нему можно обращаться через this. Потому что вы уже находитесь внутри "А".

    • @Empty_line
      @Empty_line Рік тому

      @@princessmary5556 Смотри ты сказал что с таким объяснением даже туповатый сможет понять! во первых не все такие гении как ты имхо комментарии и нужны для таких случаев, во вторых где ты услышал что он объясняет то что нужно мне?он объясняет саму суть про указатель this а не то что нужно мне

  • @chelovechek7773
    @chelovechek7773 3 місяці тому

    !!

  • @wasony.126
    @wasony.126 4 роки тому

    This это просто порсредник адресса объекта.

  • @AlexValday
    @AlexValday 3 роки тому

    музыка отвлекает...

  • @Viamsupervadetvadens
    @Viamsupervadetvadens 6 років тому

    up

  • @ЭдКалумнуз
    @ЭдКалумнуз 3 роки тому +1

    Лучше бы вместо названия "this" был "self", так сразу было бы понятно.

  • @JohnSmith-es2fh
    @JohnSmith-es2fh 3 роки тому

    я чёт всё - равно не догоняю

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому +1

      Каждый объект хранит свой адрес в памяти. this просто является константным указателем на этот самый адрес, таким же, какой мы создавали в уроке про указатели, только он создаётся автоматически и его адрес нельзя изменить.

    • @JohnSmith-es2fh
      @JohnSmith-es2fh 3 роки тому

      @@Kokurorokuko спасибо, я как раз недавно в принципе разобрался. но всё - равно спасибо

    • @princessmary5556
      @princessmary5556 Рік тому

      @@Kokurorokuko Вы написали чушь. 1. Объекты не хранят свои адреса. 2. ключевое слово this - вообще не является константным указателем. Ключевое слово this - это prvalue. Т.е, это *выражение* значением которого является временный объект указательного типа, который содержит адрес implicit object parameter. 3. Значение получаемого адреса вполне себе можно изменить. Это не имеет смысла, но если хочется - можно.

  • @C2H5OHH
    @C2H5OHH 3 роки тому

    Спасибо за урок!