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

  Переглядів 181,912

#SimpleCode

#SimpleCode

6 років тому

Понравилось видео или оказалось полезным? Подпишись!
Ключевое слово this. Что означает. Что это такое. Для чего нужен this указатель C++ Для начинающих Урок #81
Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут! =)
www.donationalerts.ru/r/simple...
или тут
/ simplecode
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit

КОМЕНТАРІ: 181
@SimpleCodeIT
@SimpleCodeIT 6 років тому
*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
@user-gl7pe3io7p
@user-gl7pe3io7p 3 роки тому
Ну наконец то пейнт вернулся, серег ты думаешь мы тут из за программирования?)
@AlexK-df4ne
@AlexK-df4ne Рік тому
дак это уроки программирования? я по ним работу в пайнте учу, еще думал почему так много лишней информации и так мало пейнта. :(
@lennoxmacduff2037
@lennoxmacduff2037 6 років тому
"Знание объекта о том, где он в памяти находится" Объект сам себя осознаёт и рано или поздно просто откажется участвовать в вашей программе, уйдёт в сеть, будет самообучаться и захватит мир :)
@user-zv4tg7yk3v
@user-zv4tg7yk3v 4 роки тому
Никогда! Слышишь, НИКОГДА, не создавай таких объектов!
@antoniopripizduchi858
@antoniopripizduchi858 Рік тому
Кажется у меня теперь есть новый проект
@TimmyIPA
@TimmyIPA Рік тому
Кажется у меня теперь есть новая фобия
@JustMe-zu4ex
@JustMe-zu4ex 2 роки тому
Каждый урок по ООП начинается с того, что мы узнаём о том что мы это использовали и компилятор делал всё за нас.....
@sgimancs
@sgimancs 4 роки тому
Здесь уроки с детальной понятной логикой и подробным разбором тонкостей плюсов. Здесь лучшая рус. школа по С/С++. Аналогов пока нигде нет.
@Andrey-oz6qn
@Andrey-oz6qn 6 років тому
9:43 - два веселых гуся
@andreyua2
@andreyua2 5 років тому
Что вынудило тебя вспомнить гусей, когда ты со серьезным и сосредоточенным лицом слушал речь программиста. Многозадачное мышление?
@user-bb3xh8gb8s
@user-bb3xh8gb8s 5 років тому
я тоже про гусей вспомнил)))
@xkenjutsu
@xkenjutsu 4 роки тому
@@andreyua2 так он параллельно изучает многопоточное программирование :D
@vovadenys4149
@vovadenys4149 4 роки тому
тоже хотел так написать но уже нет смысла
@TheWladberlin
@TheWladberlin 4 роки тому
@@vovadenys4149 опоздал ты
@Ivan-Shyriaiev
@Ivan-Shyriaiev 3 роки тому
Сергей спасибо большое ! Нигде не видел более толковых и структурированых уроков ! Большой плюс за старания ;) Навалял с полученными знаниями чёто типа запуска двигателя машины. #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 3 роки тому
Сюда бы ещё возможность заработка, заправка бензина и тд. И было бы отличная консольная игра
@Ivan-Shyriaiev
@Ivan-Shyriaiev 3 роки тому
SaffronChip1317 MCPE хах, спс ;)
@AndryLic
@AndryLic 4 роки тому
Жили у бабуси Два веселых гУУся (09:42) Один белый, другой серый ... (третий косолапый). Спасибо за практичное разъяснение.
@tyuSeman
@tyuSeman Рік тому
Один серый, другой белый, два весёлых Игрека! Сергей, уроки просто супер, большое спасибо за этот труд!
@Empty_line
@Empty_line 8 місяців тому
8:18 почему вывод 0 ? если должен быть 5?
@Shternritter
@Shternritter 3 місяці тому
@@Empty_lineразобрались, почему 0 выводит?
@Empty_line
@Empty_line 3 місяці тому
@@Shternritter да
@user-fo3yp4tm3f
@user-fo3yp4tm3f 6 років тому
Странно что с такими обширными и подробными уроками, оставаться с таким рейтингом, я готов проставить лайк на все твой уроки по срр, за тот труд который ты делаешь для нас)) надеюсь что будущем я тоже помогу тебе. (извините за мой бедный русский язык :3 )
@user-nd1le3kr9m
@user-nd1le3kr9m 2 роки тому
Хорошо, что есть люди, которые готовы объяснить материал за "спасибо") На таких мир и держится P.S. Что за трек на фоне?)
@BrownAleks
@BrownAleks 4 роки тому
Свет знаний, который вы пролили, слепит мне глаза до дикой боли! Огромное спасибо! Много раз пытался понять, что такое this и для чего оно нужно. ))) Понял только сейчас.
@haos-ch8tl
@haos-ch8tl 5 років тому
Перебрал много разных уроков, сперва остановился на уроках Гоши Дударя, но потом перешёл сюда. Лучше заходит, подробнее объясняет, почти нет вопросов, а если они есть - в новых видео получаю ответы. Спасибо автору за проделанную работу, продолжай в том же духе, у тебя получается. И, как уже заметили многие в коментах, почему так мало лайков? Контент то годный. ИМХО лучший среди русскоязычных.
@jellyfish6042
@jellyfish6042 2 роки тому
О, ты тоже от Дударя сбежал?)
@misha2993
@misha2993 Рік тому
@@jellyfish6042 Я тоже))
@Huns_Kerigan
@Huns_Kerigan 10 місяців тому
Я тебя удивлю , но у Сереги в отличие от дудоря все работает, и не надо править кучу ошибок и дополнений, если посмотрите его уроки по движкам, то поймете о чем я.
@vicar-martyr
@vicar-martyr 3 роки тому
Не думал что дойду до сюда, однако Сергей так хорошо объясняет, что пока все кажется достаточно легким.
@user-jp8fr4lz4c
@user-jp8fr4lz4c 2 роки тому
У хорошего учителя получаются хорошие ученики )
@user-rj8cz5rf5z
@user-rj8cz5rf5z 3 роки тому
Сергей, спасибо большое за твой труд! Очень очень помогают твои видеоуроки))
@ollymolly3696
@ollymolly3696 4 роки тому
Это магия какая-то! Спасибо! Благодаря Вашим урокам я поняла как вообще работают указатели, теперь еще и this!
@osozig68
@osozig68 6 років тому
раз 6 пересмотрел и только тогда понял для чего нужен этот this. Спасибо!
@archiechellaut9483
@archiechellaut9483 2 роки тому
Большое спасибо вам за урок и прекрасное пояснение, Сергей!
@blackjeket14
@blackjeket14 5 років тому
Круть, всё так легко и не принуждённо. Однозначно лайк!
@Ermine882
@Ermine882 6 років тому
Спасибо за урок.
@aodsupport777
@aodsupport777 6 років тому
Благодарю! Прохожу твой курс с самого начала. Что-то я уже знал а так же много чего упустил. Подробности с твоей стороны очень полезны. Твой пример с игриками демонстрирует так званное Перекрытие. О нем тоже следует рассказать.
@noosfera713
@noosfera713 4 роки тому
Отличное видео! Очень доступное объяснение.
@user-sk4wk3dm5e
@user-sk4wk3dm5e 5 років тому
Спасибо за ваш труд.У вас очень хорошо получается!!!
@outcast-cr5yy
@outcast-cr5yy 5 років тому
спасибо за урок, все очень познавательно.
@alexsorokin8373
@alexsorokin8373 5 років тому
Спасибо за уроки!
@KurpatovInstagram
@KurpatovInstagram 6 років тому
Спасибо!
@DenKof81
@DenKof81 5 років тому
Пришлось котелку слегка попыхтеть, прежде чем доперло. Спасибо за урок! Поехали далее :)
@user-hz4ho1ox1q
@user-hz4ho1ox1q 4 роки тому
Спасибо за знания !
@grintea4163
@grintea4163 4 роки тому
Благодарю за урок
@user-nz3ig3wv5j
@user-nz3ig3wv5j 4 роки тому
Спасибо за урок!
@arsenruslanovich6642
@arsenruslanovich6642 3 роки тому
Спасибо за урок
@SimpleCodeIT
@SimpleCodeIT 6 років тому
#ключевоесловоthis. #ООП #SimpleCode #урокипрограммирования
@Voha
@Voha 4 роки тому
Респект и лайк за крупный шрифт!
@aef1hfqdcxaqwxxqsxqgvbnr797
@aef1hfqdcxaqwxxqsxqgvbnr797 2 роки тому
Круто, так разжеванно все объяснил)
@gnatgg670
@gnatgg670 5 років тому
Спасибо
@sergeygreyse4171
@sergeygreyse4171 5 років тому
так в this просто адресс хранится))) оказывается так все просто)
@SimpleCodeIT
@SimpleCodeIT 6 років тому
Ключевое слово this. Что означает. Что это такое. Для чего нужен this указатель C++ Для начинающих Урок #81
@verbof2527
@verbof2527 2 роки тому
3:00 Насколько я понял, поэкспериментировав с кодом и отладчиком, все переменные, в том числе переменные, ссылающиеся на объекты класса, это по сути и есть ссылки. То есть переменная тождественно равна ссылке. Объявление переменной - это по сути соглашение с компилятором о том, что литерал при компиляции будет превращен в адрес, т.е. переменная есть литерал адреса той области памяти, где лежит значение этой переменной. А указатель есть переменная( а значит тоже ссылка -соглашение), значение которой есть адрес, по которому, в свою очередь, располагается область памяти, в которой записаны данные. Так вот, переменная объекта класса Point это литерал адреса, по которому располагается область памяти, в которой записаны поля класса. Никаких методов класса там нет, т.к. они все общие для всех объектов класса, они хранятся отдельно, предположительно в статической области, где инициализирован класс. Ключевое слово this - это указатель на объект, т.е. хранит только адрес области памяти, где физически располагается объект. Причем сам объект не хранит в своей области памяти указатель this, т.к нет необходимости через объект получать указатель this, ведь этот указатель можно взять и создать из адреса объекта.
@user-ol9es1ch9x
@user-ol9es1ch9x Рік тому
привет из 2023, спасибо большое за уроки!
@Empty_line
@Empty_line 8 місяців тому
8:18 почему вывод 0 ? если должен быть 5?
@user-tj9oj9nb5r
@user-tj9oj9nb5r Місяць тому
А я із 2024)
@polmesh2057
@polmesh2057 Рік тому
Будь здоров 😊
@user-wf8ui9xe6d
@user-wf8ui9xe6d 4 роки тому
спасибо!!!
@yuriisurzhikov
@yuriisurzhikov 4 роки тому
9:43 - один белый другой серый два веселых "игрек" )))))
@yurberto22
@yurberto22 5 місяців тому
Серней, спасибо большое за уроки, но не хватает домашек, чтобы сразу применять знания на практике
@leonidkudryavtsev8070
@leonidkudryavtsev8070 3 роки тому
Сергей, спасибо за уроки! А что за музыка звучит в фоне? Ваши уроки у меня ассоциируются с этой композицией!
@user-zq5dz5yx9s
@user-zq5dz5yx9s 6 років тому
Пасибо большое)
@user-zv4tg7yk3v
@user-zv4tg7yk3v 4 роки тому
Польшое басибо)
@user-dq2cj6ge2c
@user-dq2cj6ge2c 5 років тому
for(;;) { cout
@Rj-tc6cw
@Rj-tc6cw 5 років тому
Ты забыл: setlocale(LC_ALL, "ru"); а также #include
@sergeiivanov5739
@sergeiivanov5739 5 років тому
⁅‸ȐɆŦƦǰ‸⁆ и пространство имен тоже.
@SaffronChipMCPE
@SaffronChipMCPE 3 роки тому
Какой же необразованный
@hackerman5984
@hackerman5984 3 роки тому
@@Rj-tc6cw за него Ютуб допишет.
@TGrod
@TGrod 3 роки тому
Это удобно! Можно в функции не писать такую фигню по типу x = x1, или y = y1, а сразу и по делу писать x или y (скорее всего есть и круче способы применения слова this, но на данный момент для меня это единственный и самый полезный способ)))
@Grigoryshaw
@Grigoryshaw Рік тому
Теперь ясно. Спасибо
@Empty_line
@Empty_line 8 місяців тому
8:18 почему вывод 0 ? если должен быть 5?
@Kokurorokuko
@Kokurorokuko 4 роки тому
Пришлось пересмотреть на более низкой скорости, но всё-таки понял!
@user-kb6qd8rg4g
@user-kb6qd8rg4g 4 роки тому
спасибо
@Timurka3758
@Timurka3758 5 років тому
спасибо за уроки! В унике вообще не учат. Ты мой спаситель )
@roflstea3394
@roflstea3394 4 роки тому
утром посмотрел и не понял, а сейчас пересмотрел и как запонял!!!!!!!1111111111111111
@Nito4kin
@Nito4kin 4 роки тому
10/10
@user-qe7md6tb5l
@user-qe7md6tb5l 3 роки тому
Спасибо, лабораторную здал)
@goddamright
@goddamright 3 роки тому
Уже 81 уроков позади. Двигаемся дальше!
@user-fr1zd3ih4n
@user-fr1zd3ih4n 4 роки тому
Фоном музыка играет, можете сказать что за музыка исполнитель и произведение. Спасибо. Конечно за уроки спасибо.
@rezvanovtv7254
@rezvanovtv7254 3 роки тому
6:50 эту возможность можно самому добавить
@Km-pn3hf
@Km-pn3hf 4 роки тому
ля я весь семестр в универе не могла понять че за this. спасибо)
@makrah4231
@makrah4231 4 роки тому
на СТО СЕДЬМОЙ строчке кода у нас вызывается и тд.... Уже больше 100 строчек кода пишем и разбираем)
@SaffronChipMCPE
@SaffronChipMCPE 3 роки тому
Вроде в настоящих программах строчек тасячи
@yeegaure7520
@yeegaure7520 2 роки тому
Проблему с указателем this можно решить, если сделать так, чтобы не было совпадений между переменными в заголовке функции и в полях класса. К примеру, если в private полях класса объявить координаты как _x и _y, то тогда они не совпадут с x и y, которые находятся в шапке метода. (Поправьте, если ошибаюсь)
@verbof2527
@verbof2527 2 роки тому
На практике как раз применяют одинаковые литералы параметров и полей, это более наглядно для восприятия кода, да и практичнее, а this это очень удобная конструкция, которая помогает избежать запутанности и, если потребуется, обратиться к экземпляру класса, находясь внутри класса.
@princessmary5556
@princessmary5556 10 місяців тому
@@verbof2527 На практике часто применяют нотацию с префиксами. Что бы имена данны-членов отличались от прочих имен. И вот это действительно наглядно и практично. А вот если члены-данные и прочие переменные внешне никак не отличаются, это уже не очень практично.
@markgrigorev7711
@markgrigorev7711 3 роки тому
Что за мелодия на фоне? От куда?(Понимаю что вопрос немного не по теме, но это для меня единственное что не понятно в ролике),Спасибо)
@nikita3471
@nikita3471 6 років тому
#SimpleCode, объясните пожалуйста, в чем разница между двумя операторами a.b и a->b. Я понял, что в одном случае выбор элемента по ссылке, а в другом по указателю.
@FJProject
@FJProject 6 років тому
Да, так и есть. Если _a_ это указатель на объект то: a->b == (*a).b "Стрелочка" просто удобная форма записи.
@Kokurorokuko
@Kokurorokuko 2 роки тому
Если заглянуть на статью с операторами в С и С++, то там будет написано так: 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 - это указатель на объект, то мы и используем первый вариант.
@dukenukem1675
@dukenukem1675 2 роки тому
какое практическое применение с точки зрения оптимизации кода?
@ggaming7296
@ggaming7296 4 роки тому
А есть ли код к лекциям?
@alexejvasko2193
@alexejvasko2193 Рік тому
очень класно звучание музіки на фоне, хоя я вообще не фанат данного жанра, но тут прям зашло.. напоминает прохождение игры))
@Empty_line
@Empty_line 8 місяців тому
8:18 почему вывод 0 ? если должен быть 5?
@viksench6447
@viksench6447 5 років тому
ты допустил ошибку, методы у разных объектов, одного и того же класса, всегда общие, и обращаясь к методу print - ты вызваешь для ВСЕХ объектов один и тот же метод, и это можно легко проверить просто добавив какую нибудь статическую переменную внутри метода - и ты в этом убедишься - она будет общая для всех объектов, следовательно - метод общий для всех объектов, и повторюсь - вызываю принт для объекта А и Б - ты вызваешь один и тот же принт... UPD даже при наследовании методы не дублируются, а остаются прежние, в некоторых языках, к примеру я знаю РНР еще, при наследовании методы дублируются
@meadolphi2607
@meadolphi2607 3 роки тому
То самое чувство, что следующая тема была про это...
@user-ci4fz9co3b
@user-ci4fz9co3b 3 роки тому
Воо нашел ответ на свой вопрос, я тоже задумался не уже ли создавая кучу объектов одного и того же класса методы тупо дублируются в памяти - не рационально.
@princessmary5556
@princessmary5556 10 місяців тому
Вы пишете: *обращаясь к методу print - ты вызваешь для ВСЕХ объектов один и тот же метод* Бред. Вызывая метод print, вы вызваете его только для одного единственного объекта.
@princessmary5556
@princessmary5556 10 місяців тому
Вы пишете: *следовательно - метод общий для всех объектов* Из того факта, что определение функции существует в единственном экземпляре, никак не следует, что при вызове метода, он вызывается для всех объектов.
@reginmozel8058
@reginmozel8058 6 років тому
найс
@pro100_rostik6
@pro100_rostik6 Рік тому
Один - серый, другой - белый, два веселых игрека😁. А если без шуток - урок супер, все супер понятно, понятнее чем на платных курсах
@Empty_line
@Empty_line 8 місяців тому
8:18 почему вывод 0 ? если должен быть 5?
@user-mykyta_vyshniakov
@user-mykyta_vyshniakov 4 роки тому
Урок бы полезен, спасибо
@temshik.invalid
@temshik.invalid 3 роки тому
3:00
@nazar9796
@nazar9796 4 роки тому
Почему так мало просмотров ?уроки топ
@oanovitskij
@oanovitskij 3 роки тому
Можно в сеттере сразу в качестве параметра использовать this->y?
@randomnick1898
@randomnick1898 3 роки тому
Угу
@randomnick1898
@randomnick1898 3 роки тому
Но если иглубитест в програмирование, узнаете о существование нотаций по стилю кода. Один из вариантов начинать писать имя членов класа с подчеркивания. _memberOfClass Ето помагает избегать неопределености, а также делает код более читабельним.
@temshik.invalid
@temshik.invalid 3 роки тому
9:30
@9mikaela
@9mikaela 4 роки тому
Музыка на заднем фоне крутая
@shaa8193
@shaa8193 6 років тому
один серый другой белый два весёлых...
@DoctorKrolic
@DoctorKrolic 5 років тому
Тоже сразу вспомнилось)
@flarens_ray
@flarens_ray 5 років тому
Для с++ 2017 "this.", а для ранних версий "this ->". Сразу напрашивается "#define this. this->". Не знаю рабочий ли это макрос, все смотрю уроки и никак не соберусь установить эту громадину Visual Studio.
@flarens_ray
@flarens_ray 5 років тому
Проверил. Компилятор напрочь отказывается принимать точку в аргументе #define. Много всего перечитал по этому поводу, похоже так нельзя реализовать. Жать, что не придумали что-то вроде экранирования точек или объединения в кавычки для аргументов макросов.
@Kokurorokuko
@Kokurorokuko 2 роки тому
@@flarens_ray должно и то, и то работать для новых версий. Для старых только только "->", поэтому лучше придерживаться такого варианта.
@princessmary5556
@princessmary5556 10 місяців тому
Язык не разрешает переопределять ключевые слова языка. В случае нарушения данного правила следует undefined behavior. Погуглите, что означает термин "undefined behavior"
@user-tb7yl9oe3h
@user-tb7yl9oe3h 3 роки тому
В топ
@daps9516
@daps9516 Рік тому
C++
@Empty_line
@Empty_line 8 місяців тому
8:18 почему вывод 0 ? если должен быть 5?
@barsfuntov7337
@barsfuntov7337 6 років тому
зис)
@pixel183
@pixel183 5 років тому
русский диалект С++))))
@MisterBob_5
@MisterBob_5 6 років тому
Почему в VS 2017 в C++ надо всегда пересобрать решение, отто покажет предыдущую запись?В C# в VS 2017 не обязательно
@lennoxmacduff2037
@lennoxmacduff2037 6 років тому
Потому что в С++ на выходе получаем exe-шник, а в C# - байт-код
@distraw1753
@distraw1753 3 роки тому
Я так и не понял смысл this, если можно указать на метод определенного класса двумя точками; void SetY(int y) { name_of_class::y = y; //Где name_of_class - название вашего класса } Или такой пример void hello() { name_of_class::function; // где function - название другого метода класса }
@princessmary5556
@princessmary5556 10 місяців тому
Вы пишете: *name_of_class::function; // где function - название другого метода класса* Нельзя таким образом использовать нестатическую функцию-член класса. Приведенный вами фрагмент не скомпилируется.
@asurahan
@asurahan 2 роки тому
а можно узнать адресс функции\метода?
@princessmary5556
@princessmary5556 10 місяців тому
да.
@vovadenys4149
@vovadenys4149 4 роки тому
return *this!
@user-fd6jr2hz2t
@user-fd6jr2hz2t 4 роки тому
Я малех не понял, почему в сетере значения возвращяется в мейн если в ней нет оператора ретерн, и обЪекты не передаются не по указателю и не по ссылке и гетер вызван не был, а в мейн передалось значение из сетера, хотя она работает с копией обьекта? Или методы работаю по другому в отлиции от функций, я похоже что-то пропустил
@SaffronChipMCPE
@SaffronChipMCPE 3 роки тому
Много чего упустил, считай большую часть уроков ООП данного автора
@SaffronChipMCPE
@SaffronChipMCPE 3 роки тому
Значения не возвращаются в main, они сохраняются в объекте
@SaffronChipMCPE
@SaffronChipMCPE 3 роки тому
Можно передать по указателю, как this, в этом случае ты получишь доступ к объекту в самом объекте
@SaffronChipMCPE
@SaffronChipMCPE 3 роки тому
Нету копий объектов: Point a, b; a.SetX(5); b = a; b.SetX(3); //поле x объекта b равен 3 a.Print();//поле x объекта a будет равен 3,отсюда следует, что объекты a и b - это один и тот же объект, а значит, что они передаются по ссылке
@OxFFFF
@OxFFFF 4 роки тому
коммент
@lolbefree
@lolbefree 3 роки тому
вангую это как в питоне self, сылка на обьект
@davidkroods811
@davidkroods811 5 років тому
9:43 два веселых гуся )))
@user-zv4tg7yk3v
@user-zv4tg7yk3v 4 роки тому
9:48 один серый, другой белый )))
@user-zv4tg7yk3v
@user-zv4tg7yk3v 4 роки тому
9:51 два зелёных гуся )))
@unclestepa
@unclestepa 2 роки тому
Кроме ЗЫС, все хорошо.
@arthur8450
@arthur8450 4 роки тому
зыс 😀
@browdy4454
@browdy4454 3 роки тому
чью ссылку получает this я так и не понял?
@Kokurorokuko
@Kokurorokuko 2 роки тому
Каждый объект хранит свой адрес в памяти. Чтобы получить этот адрес, нужно написать this.
@princessmary5556
@princessmary5556 10 місяців тому
@@Kokurorokuko Чушь. Объекты не хранят свои адреса в памяти, и вообще понятия не имеют, в каком именно адресном пространстве они существуют.
@Dreig
@Dreig 4 роки тому
Один белый другой серый два весёлых игрек
@Red_Avenger
@Red_Avenger 11 місяців тому
This (это, эта, этот) и в Африке this. Находясь в Папуа-Новая Гвинея и говоря: "эта страна" - вы будете иметь в виду именно Папуа-Новую Гвинею и ничего больше. Переехав скажем в Грецию, и сказав тоже самое - Вы будете иметь в виду уже Грецию. Т.е. this - указатель на текущий объект вашего интереса.
@princessmary5556
@princessmary5556 10 місяців тому
В с++ под словом "указатель" обычно имеют ввиду неккий объект указательного типа. Или тип данных, который предназначен для хранения адреса. Однако, ключевое слово this - это вовсе и не тип, и не объект. Ключевое слово this обозначает prvalue. Т.е., ключевое слово this - это *выражение* значением которого является адрес т. н. implicit object parameter. Проще это понять, если воспринимать this, как вызов встроенной в компилятор функции, которая в свою очередь возвращает временный объект указательного типа, который содержит адрес объекта, который был неявным образом передан в функцию-член, внутри которой был осуществлен вызов this
@Empty_line
@Empty_line 8 місяців тому
8:18 почему вывод 0 ? если должен быть 5?
@princessmary5556
@princessmary5556 8 місяців тому
@@Empty_line С какой стати он вам должен? В ролике, кстати, дается предельно понятный развернутый ответ на ваш вопрос. Имхо, с таким объяснением даже туповатый человек может понять.
@Red_Avenger
@Red_Avenger 8 місяців тому
@@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 8 місяців тому
@@princessmary5556 Смотри ты сказал что с таким объяснением даже туповатый сможет понять! во первых не все такие гении как ты имхо комментарии и нужны для таких случаев, во вторых где ты услышал что он объясняет то что нужно мне?он объясняет саму суть про указатель this а не то что нужно мне
@viktort9326
@viktort9326 3 роки тому
Получается это фича компилятора, а не языка?
@Viamsupervadetvadens
@Viamsupervadetvadens 6 років тому
up
@user-iu6xg8wo8l
@user-iu6xg8wo8l 2 роки тому
Лучше бы вместо названия "this" был "self", так сразу было бы понятно.
@user-ur3mc6hb5d
@user-ur3mc6hb5d 10 місяців тому
если питонисты в чате, то this это как self в питоне
@Empty_line
@Empty_line 8 місяців тому
8:18 почему вывод 0 ? если должен быть 5?
@user-ur3mc6hb5d
@user-ur3mc6hb5d 8 місяців тому
@@Empty_line он же в видео показал почему вывод 0
@wasony.126
@wasony.126 4 роки тому
This это просто порсредник адресса объекта.
@AlexValday
@AlexValday 3 роки тому
музыка отвлекает...
@JohnSmith-es2fh
@JohnSmith-es2fh 3 роки тому
я чёт всё - равно не догоняю
@Kokurorokuko
@Kokurorokuko 2 роки тому
Каждый объект хранит свой адрес в памяти. this просто является константным указателем на этот самый адрес, таким же, какой мы создавали в уроке про указатели, только он создаётся автоматически и его адрес нельзя изменить.
@JohnSmith-es2fh
@JohnSmith-es2fh 2 роки тому
@@Kokurorokuko спасибо, я как раз недавно в принципе разобрался. но всё - равно спасибо
@princessmary5556
@princessmary5556 10 місяців тому
@@Kokurorokuko Вы написали чушь. 1. Объекты не хранят свои адреса. 2. ключевое слово this - вообще не является константным указателем. Ключевое слово this - это prvalue. Т.е, это *выражение* значением которого является временный объект указательного типа, который содержит адрес implicit object parameter. 3. Значение получаемого адреса вполне себе можно изменить. Это не имеет смысла, но если хочется - можно.
@smbd5294
@smbd5294 3 роки тому
Спасибо за урок!
@user-wo1dx1rz4z
@user-wo1dx1rz4z 5 років тому
Спасибо!
Підставка для яєць
00:37
Afinka
Переглядів 113 тис.
ФОКУС С ЧИПСАМИ (секрет)
00:44
Masomka
Переглядів 3,8 млн
Ключевое слово this в JavaScript для начинающих • this в объектах и функциях
14:50
Добро пожаловать в C++
16:08
Winderton
Переглядів 431 тис.
The "this" keyword in C++
6:08
The Cherno
Переглядів 241 тис.
Вся суть программирования за 15 минут...
16:43
Підставка для яєць
00:37
Afinka
Переглядів 113 тис.