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

Поделиться
HTML-код
  • Опубликовано: 15 дек 2024

Комментарии • 185

  • @SimpleCodeIT
    @SimpleCodeIT  7 лет назад +57

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

  • @МихаилКрылов-п5ч
    @МихаилКрылов-п5ч 3 года назад +291

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

    • @AlexK-df4ne
      @AlexK-df4ne Год назад +28

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

  • @tyuSeman
    @tyuSeman Год назад +16

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

    • @Empty_line
      @Empty_line Год назад

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

    • @Shternritter
      @Shternritter 10 месяцев назад

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

    • @Empty_line
      @Empty_line 10 месяцев назад

      @@Shternritter да

  • @Ivan-Shyriaiev
    @Ivan-Shyriaiev 4 года назад +17

    Сергей спасибо большое ! Нигде не видел более толковых и структурированых уроков ! Большой плюс за старания ;)
    Навалял с полученными знаниями чёто типа запуска двигателя машины.
    #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 лет назад +63

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

  • @lennoxmacduff2037
    @lennoxmacduff2037 6 лет назад +231

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

    • @ОлегВещий-р1ф
      @ОлегВещий-р1ф 5 лет назад +29

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

    • @antoniopripizduchi858
      @antoniopripizduchi858 2 года назад +3

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

    • @TimmyIPA
      @TimmyIPA 2 года назад +5

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

  • @Andrey-oz6qn
    @Andrey-oz6qn 6 лет назад +157

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

    • @andreyua2
      @andreyua2 5 лет назад +34

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

    • @blessed_generation
      @blessed_generation 5 лет назад +17

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

    • @xkenjutsu
      @xkenjutsu 5 лет назад +16

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

    • @vovadenys4149
      @vovadenys4149 5 лет назад +7

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

    • @TheWladberlin
      @TheWladberlin 5 лет назад +2

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

  • @AndryLic
    @AndryLic 4 года назад +15

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

  • @haos-ch8tl
    @haos-ch8tl 5 лет назад +45

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

    • @jellyfish6042
      @jellyfish6042 3 года назад +2

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

    • @misha2993
      @misha2993 Год назад

      @@jellyfish6042 Я тоже))

    • @Huns_Kerigan
      @Huns_Kerigan Год назад

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

  • @BrownAleks
    @BrownAleks 4 года назад +14

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

  • @vicar-martyr
    @vicar-martyr 3 года назад +4

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

  • @ollymolly3696
    @ollymolly3696 5 лет назад +5

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

  • @osozig68
    @osozig68 6 лет назад +4

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

  • @ИлиясКоянбай
    @ИлиясКоянбай 6 лет назад +96

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

  • @DenKof81
    @DenKof81 5 лет назад +5

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

  • @НикитаРябых-р8ш
    @НикитаРябых-р8ш 3 года назад +43

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

  • @JustMe-zu4ex
    @JustMe-zu4ex 3 года назад +28

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

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

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

  • @Ermine882
    @Ermine882 7 лет назад +19

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

  • @SimpleCodeIT
    @SimpleCodeIT  7 лет назад +17

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

  • @SimpleCodeIT
    @SimpleCodeIT  7 лет назад +26

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

    • @verbof2527
      @verbof2527 3 года назад +2

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

  • @yurberto22
    @yurberto22 Год назад +1

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

  • @ДмитроШаповалов-ю5э
    @ДмитроШаповалов-ю5э 4 года назад +3

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

  • @blackjeket14
    @blackjeket14 6 лет назад +2

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

  • @archiechellaut9483
    @archiechellaut9483 3 года назад +1

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

  • @KurpatovInstagram
    @KurpatovInstagram 7 лет назад +11

    Спасибо!

  • @aodsupport777
    @aodsupport777 6 лет назад +2

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

  • @dezign_er
    @dezign_er 7 лет назад +11

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

  • @noosfera713
    @noosfera713 5 лет назад +1

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

  • @Voha
    @Voha 5 лет назад +1

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

  • @outcast-cr5yy
    @outcast-cr5yy 6 лет назад +2

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

  • @aef1hfqdcxaqwxxqsxqgvbnr797
    @aef1hfqdcxaqwxxqsxqgvbnr797 3 года назад +1

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

  • @РоманГорбенко-е2д
    @РоманГорбенко-е2д 6 лет назад +1

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

  • @TGrod
    @TGrod 4 года назад +2

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

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

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

  • @alexsorokin8373
    @alexsorokin8373 6 лет назад +2

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

  • @grintea4163
    @grintea4163 5 лет назад +1

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

  • @ЯЗдесь-ъ5ф
    @ЯЗдесь-ъ5ф 6 лет назад +26

    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 за него Ютуб допишет.

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

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

    • @Empty_line
      @Empty_line Год назад

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

    • @ДаніелаРак
      @ДаніелаРак 9 месяцев назад

      А я із 2024)

  • @roflstea3394
    @roflstea3394 5 лет назад +3

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

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

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

  • @simongreyse4171
    @simongreyse4171 5 лет назад +18

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

  • @arsenruslanovich6642
    @arsenruslanovich6642 3 года назад +1

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

  • @yuriisurzhikov
    @yuriisurzhikov 5 лет назад +20

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

  • @polmesh2057
    @polmesh2057 Год назад +1

    Будь здоров 😊

  • @Kokurorokuko
    @Kokurorokuko 5 лет назад +1

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

  • @Timurka3758
    @Timurka3758 6 лет назад +4

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

  • @Grigoryshaw
    @Grigoryshaw 2 года назад +1

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

    • @Empty_line
      @Empty_line Год назад

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

  • @pro100_rostik6
    @pro100_rostik6 Год назад +1

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

    • @Empty_line
      @Empty_line Год назад

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

  • @ВоваИвков-б6у
    @ВоваИвков-б6у 4 года назад +2

    спасибо!!!

  • @rezvanovtv7254
    @rezvanovtv7254 3 года назад +2

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

  • @gnatgg670
    @gnatgg670 6 лет назад +2

    Спасибо

  • @leonidkudryavtsev8070
    @leonidkudryavtsev8070 4 года назад +3

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

  • @yeegaure7520
    @yeegaure7520 3 года назад +1

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

    • @verbof2527
      @verbof2527 3 года назад

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

    • @princessmary5556
      @princessmary5556 Год назад +2

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

  • @Km-pn3hf
    @Km-pn3hf 5 лет назад +4

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

  • @alexejvasko2193
    @alexejvasko2193 Год назад +1

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

    • @Empty_line
      @Empty_line Год назад

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

  • @ЯрославГоловко-ф6и
    @ЯрославГоловко-ф6и 4 года назад +1

    спасибо

  • @goddamright
    @goddamright 4 года назад +1

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

  • @user-mykyta_vyshniakov
    @user-mykyta_vyshniakov 4 года назад +2

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

  • @makrah4231
    @makrah4231 4 года назад +4

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

    • @SaffronChipMCPE
      @SaffronChipMCPE 4 года назад

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

  • @nazar9796
    @nazar9796 4 года назад +2

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

  • @Алексей-б4г4б
    @Алексей-б4г4б 4 года назад +1

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

  • @nikita3471
    @nikita3471 7 лет назад +3

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

    • @FJProject
      @FJProject 7 лет назад +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 - это указатель на объект, то мы и используем первый вариант.

  • @user-qe7md6tb5l
    @user-qe7md6tb5l 3 года назад

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

  • @flarens_ray
    @flarens_ray 6 лет назад +4

    Для с++ 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"

  • @markgrigorev7711
    @markgrigorev7711 3 года назад +1

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

  • @viksench6447
    @viksench6447 6 лет назад +6

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

    • @meadolphi2607
      @meadolphi2607 4 года назад

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

    • @АлександрДаскаль-е6т
      @АлександрДаскаль-е6т 4 года назад

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

    • @princessmary5556
      @princessmary5556 Год назад

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

    • @princessmary5556
      @princessmary5556 Год назад

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

  • @temshik.invalid
    @temshik.invalid 3 года назад

    3:00

  • @shaa8193
    @shaa8193 6 лет назад +14

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

    • @DoctorKrolic
      @DoctorKrolic 6 лет назад +4

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

  • @temshik.invalid
    @temshik.invalid 3 года назад

    9:30

  • @ggaming7296
    @ggaming7296 4 года назад +1

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

  • @daps9516
    @daps9516 Год назад +3

    C++

    • @Empty_line
      @Empty_line Год назад

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

  • @dukenukem1675
    @dukenukem1675 2 года назад

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

  • @barsfuntov7337
    @barsfuntov7337 7 лет назад +15

    зис)

    • @pixel183
      @pixel183 5 лет назад +1

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

  • @oanovitskij
    @oanovitskij 4 года назад

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

    • @randomnick1898
      @randomnick1898 4 года назад +1

      Угу

    • @randomnick1898
      @randomnick1898 4 года назад

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

  • @davidkroods811
    @davidkroods811 6 лет назад +2

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

  • @9mikaela
    @9mikaela 5 лет назад

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

  • @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 а не то что нужно мне

  • @Nito4kin
    @Nito4kin 5 лет назад

    10/10

  • @vovadenys4149
    @vovadenys4149 5 лет назад +2

    return *this!

  • @leisterhova2424
    @leisterhova2424 Месяц назад

    можно же еще Point::y = y;

  • @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 - это один и тот же объект, а значит, что они передаются по ссылке

  • @Sooderone
    @Sooderone 5 месяцев назад +1

    🧠

  • @MisterBob_5
    @MisterBob_5 7 лет назад +1

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

    • @lennoxmacduff2037
      @lennoxmacduff2037 6 лет назад +1

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

  • @unclestepa
    @unclestepa 2 года назад

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

  • @reginmozel8058
    @reginmozel8058 7 лет назад +1

    найс

  • @browdy4454
    @browdy4454 4 года назад +1

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

    • @Kokurorokuko
      @Kokurorokuko 3 года назад

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

    • @princessmary5556
      @princessmary5556 Год назад

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

  • @asurahan
    @asurahan 3 года назад

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

  • @ВЕСЕЛЫЙКЛАСТЕР
    @ВЕСЕЛЫЙКЛАСТЕР 4 года назад +1

    В топ

  • @lolbefree
    @lolbefree 3 года назад

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

  • @Dreig
    @Dreig 4 года назад +1

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

  • @Гычпук
    @Гычпук Год назад +2

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

    • @Empty_line
      @Empty_line Год назад

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

    • @Гычпук
      @Гычпук Год назад +1

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

  • @viktort9326
    @viktort9326 4 года назад +1

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

  • @OxFFFF
    @OxFFFF 4 года назад +1

    коммент

  • @distraw1753
    @distraw1753 4 года назад +2

    Я так и не понял смысл 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 - название другого метода класса* Нельзя таким образом использовать нестатическую функцию-член класса. Приведенный вами фрагмент не скомпилируется.

  • @wasony.126
    @wasony.126 4 года назад +1

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

  • @chelovechek7773
    @chelovechek7773 5 месяцев назад +1

    !!

  • @AlexValday
    @AlexValday 3 года назад +1

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

  • @Viamsupervadetvadens
    @Viamsupervadetvadens 7 лет назад +1

    up

  • @ЭдКалумнуз
    @ЭдКалумнуз 3 года назад +2

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

  • @JohnSmith-es2fh
    @JohnSmith-es2fh 3 года назад +1

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

    • @Kokurorokuko
      @Kokurorokuko 3 года назад +1

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

    • @JohnSmith-es2fh
      @JohnSmith-es2fh 3 года назад

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

    • @princessmary5556
      @princessmary5556 Год назад

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