Виртуальные методы класса c++. Ключевое слово virtual. Ключевое слово override. ООП. C++

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

КОМЕНТАРІ •

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

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

    • @Itbobojonov-ml1qz
      @Itbobojonov-ml1qz 4 місяці тому

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

  • @ВладимирСоколов-р7ц
    @ВладимирСоколов-р7ц 4 роки тому +59

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

  • @shohoch7800
    @shohoch7800 6 років тому +267

    Афигеть. Тебя смотрят серьезные ребята. Три слова бэнг и ни одной шутки про батю в здании.

    • @sergeyvoloshin1553
      @sergeyvoloshin1553 4 роки тому +8

      Акстись

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

      BADABOOM
      P.S. Есть песня русская - бадабум

    • @dankn6155
      @dankn6155 3 роки тому +12

      батя теперь в совсем другом здании)

    • @DigitRoach
      @DigitRoach 3 роки тому +32

      @@dankn6155 школьники умерли ещё на массивах и на строках в стиле "C"

    • @АнастасияКошкарева-т6д
      @АнастасияКошкарева-т6д 3 роки тому +8

      @@DigitRoach школьники, которые смотрели клипы Хованского, уже давно не школьники)))

  • @gnot7900
    @gnot7900 Рік тому +34

    Передаю респект всем кто не забросил и дошёл до этого урока + автору за хорошее обучение. Я перешёл сюда с платного курса C++ Developer потому что хоть там и профессионалы, далеко не каждый сможет подробно и понятно объяснить материал (Там за 30 минут объяснили 10+ уроков Сергея😂)

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

      То чувство когда половина уроков уже позади

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

      @HessW да знаю я, знаю, просто жалко

    • @nikitasuyazov2060
      @nikitasuyazov2060 5 місяців тому

      @HessW можешь подсказать, для перехода на программирование в UE5 хватит базы или надо заранее изучить ещё системы сборки, работу с сетями, deep learning, computer science?

  • @Binitto001
    @Binitto001 4 роки тому +5

    Слов не хватает что бы выразить свою благодарность! 3 часа ебли мозгов на лекции в универе и нихуя не понятно, а здесь все понял за 20 минут, без воды и по делу.

  • @sergbo5509
    @sergbo5509 6 років тому +25

    Из слов в начале можно сделать вывод что virtual определяет полиморфизм в С++. Но если его не использовать то поведение в дочерних классах тоже переопределяется, это тоже подходит под описание полиморфизм. Разница лишь в том, что без виртуала вызовется функция которая определена типом переменной, если она не определена в классе потомке, то вызовется функция базового класса. А вот если с вируалом, то вызывается функция которая определена типом объекта(не типом переменной как в первом случае). А если вирутальная функция не переопределена в потомке, поиск продолжается в базовом классе. Где-то я читал как работает ключевое слово virtual на уровне машинного кода. Без указания virtual адрес функции сразу записывается в инструкцию машинного кода. А если с указан virtual, то адрес входа в функцию вычисляется из таблицы виртуальных методов которая содержится в адресном пространстве самого объекта. Как-то так.

  • @Jessica_Cat-l1v
    @Jessica_Cat-l1v 9 місяців тому +2

    оххх! ПОЛИМОРФИЗМ - ЭТО ПРОСТО БОМБА!!! ОГРОМНАЯ БЛАГОДАРНОСТЬ СЕРГЕЮ ЗА ДОХОДЧИВОЕ ОБЪЯСНЕНИЕ СТОЛЬ СЛОЖНОГО МАТЕРИАЛА!!!!

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

    Виртуальные методы класса c++. Ключевое слово virtual Ключевое слово override. ООП C++ Для начинающих #103

  • @andrewbistroff1199
    @andrewbistroff1199 6 років тому +22

    Спасибо Сергей за просто и понятно изложенный материал !

  • @rib0385
    @rib0385 7 років тому +107

    Спасибо за уроки,благодаря вам закрыл программирование в универе

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

      Пожалуйста!

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

      как успехи?) Где начал работать?

    • @rib0385
      @rib0385 4 роки тому +9

      @@SaffronChipMCPE уже год как в сбертехе

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

      @@rib0385 поздравляю! :D

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

      @@rib0385 ого, за 1 год уже добрался до сбертеха :/

  • @ДанилИсаев-т5п
    @ДанилИсаев-т5п 6 років тому +50

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

  • @simplyspenser887
    @simplyspenser887 6 років тому +26

    Великолепный урок, спасибо огромное. Вроде аж 20 минут, но посмотрел на одном дыхании:)

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

      даже не заметил, как время прошло

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

    #virtual #override #ООП #SimpleCode #урокипрограммирования

  • @Look-and-say
    @Look-and-say 3 місяці тому +1

    Пришёл с НАЧАЛЬНОГО КУРСА C++ stepik. Там нихрена не понял, зато здесь всё ясно и понятно. Это всё, что нужно знать про этот курс. Я чих пых их задачи мудрёные, на которые можно часы своей жизни тратить и только запутаться

  • @proKaps
    @proKaps 6 років тому +22

    Очень хорошее объяснение! Спасибо!

  • @UnknownPerson-nf8ml
    @UnknownPerson-nf8ml 6 років тому +18

    очень полезно было. Спасибо, я аж засмотрелся

  • @user-jl7et8gx5u
    @user-jl7et8gx5u 7 років тому +16

    Спасибо. Все ясно и понятно.

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

    большое спасибо за продуманные, информативные видеоуроки! благодаря ним нашла ответы на многие интересующие вопросы и продолжаю пополнять свои знания в области программирования на с++

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

    Я хз почему так мало у вас подписчиков , вы реально заслуживаете больше подписчиков . Я хочу на курсы и смотрю вас и все понимаю , спасибо вам

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

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

  • @АндрейМиненко-ц3з
    @АндрейМиненко-ц3з 7 років тому +11

    Очередное Спасибо!

  • @ИванСычёв-й8щ
    @ИванСычёв-й8щ 5 років тому +1

    Рассказывает всё то что именно нужно без воды, классно

  • @Danshyn
    @Danshyn 6 років тому +8

    Отличный урок, особенно объяснение на реальном примере ;)

  • @brffclips1
    @brffclips1 5 років тому +100

    РЕБЯТ НЕ ЛЕНИТЕСЬ ПЕРЕСМАТРИВАТЬ. ОЧЕНЬ СИЛЬНО ПОМОГАЕТ(КАПСОМ ТАК КАК ОЧЕНЬ ВАЖНО)

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

      согласен, я лично уже забыл урок про указатель на функцию

    • @ЭдуардГибадуллин-ц5к
      @ЭдуардГибадуллин-ц5к 3 роки тому +5

      Иду по второму кругу, это нормально, повторение мать учения, далее если надо третий, ну а ещё далее точечно по темам которые срочно нужны

    • @ДмитрийНормов-ю6ц
      @ДмитрийНормов-ю6ц 2 роки тому +1

      @@ЭдуардГибадуллин-ц5к срочно нужны к экзамену?

    • @ЭдуардГибадуллин-ц5к
      @ЭдуардГибадуллин-ц5к 2 роки тому +1

      @@ДмитрийНормов-ю6ц нет, просто фанатею, нравится

    • @_Yes_.
      @_Yes_. 2 роки тому

      @@ЭдуардГибадуллин-ц5к ровытагптукпотщуплтукщпткерекрпкпкупкуркуртть

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

    Спасибо! Такого толкового пояснения полиморфизма не встречал, многе стало на места.

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

    Но кто же ставит дизлайки. Это могут здесь специально делать только "враги народа и вредители не из той оперы". Как здесь, еще никто не смог доступно и детально объяснить непростые вещи из плюсов с идеальной дикцией и эрудицией .

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

      Чтобы его видео наверно в рекомендациях не появлялись

  • @ВіталійШуманський
    @ВіталійШуманський 4 роки тому +5

    Очень крутые примеры! Несколько раз хотел нажать лайк, но он уже стоит:)

  • @ГусейнСалахов
    @ГусейнСалахов 4 роки тому +4

    Один из самых интересных уроков)))

  • @nap0le0nb0naparte7
    @nap0le0nb0naparte7 7 років тому +17

    Интересный урок, спасибо.

    • @apchike-masala
      @apchike-masala 4 роки тому

      Наполеон!
      А ну марш в торт обратно! Ты наказан!

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

    Огромное спасибо за видео!

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

    Все чётко, без воды..

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

    Благодарю за бесценную работу!

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

    Отличный канал !!!!!Просто и понятно объяснил все С++ . Спасибо

  • @mar_kha
    @mar_kha 2 роки тому +1

    Потрясающий ролик! Начинаешь (хотя бы на примитивном уровне) понимать, как осуществляли действия в любимых играх детства

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

      скинь свой тг

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

    Комментарий создан для продвижения видео! Спасибо, Сергей!

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

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

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

    Спасибо преогромное. Итак под всеми видео поставил лайки. Но конкретно это с данными примерами очень хорошо зашло. По большей части закрываю пробелы с Вашими видео. Но, чувствую, только сейчас, после Ваших уроков, начинает складываться целостная картина. А то уже расстраивался от недопонимания многих вещей. Сейчас же огромный стимул двигаться дальше.

  • @АндрейСудаков-с1х
    @АндрейСудаков-с1х 2 роки тому

    Отдельное спасибо за объяснение того, для чего virtual и override необходимы!

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

    Спасибо за объяснение, зачем это нужно! Очень помогает не сдаваться))

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

    Искал хороший урок, а нашёл золотую жилу! Спасибо большое за ваши уроки!

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

    Хорошо, что я нашел ваш канал.

  • @mr.deadwish1666
    @mr.deadwish1666 Рік тому

    Вот кто переводит в сериалах Gun как "пистолет", а не "Пушка/ствол/огнестрел"!
    Смотрю вас ещё со школы, лучший контент

  • @АндрейТоцкий-л4и

    Важный и понятный урок. Сергей, спасибо большое!!!

  • @mahpexm6995
    @mahpexm6995 2 роки тому +1

    Спасибо! Очень доходчивые и понятные объяснения)

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

    Спасибо за качественные уроки

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

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

  • @ДмитрийБузницкий-б3н

    Огромное спасибо, Сергей, очень интересно и доходчиво!

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

    #SimpleCode , как всегда на высоте :) , но замечание нужно было сказать что указатель на базовый клас не имеет доступа к индивидуальним свойствам класса наследника ибо сбивает с толку как указатель на базовый клас может взаимодействовать с производным классом!!!(не обращайте внимание на ошибки не русский)

  • @sergbo5509
    @sergbo5509 6 років тому +8

    А еще я бы подчеркнул именно тот момент, что во время присвоения Gun *gun=&submachinegun; Не смотря на то что тип переменной меняется, тип объекта на который указывает ссылка типа Gun, по прежнему остается типа SubmachineGun. Даже не смотря что список методов при обращении к этой ссылке может быть другой, это не значит что методы куда-то делись, просто через данную ссылку они не доступны. Так вот если член-функции имеют одинаковую сигнатуру, какую функцию Shoot вызывать? Из типа ссылки(Gun) или из типа объекта(SubmachineGun)? По умолчанию вызывается из типа ссылки, а при наличии ключевого слова virtual, вызывается функция из типа объекта. Вот где магия)

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

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

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

      Такая же история. Надо просто со временем подойти к этому, на подсознании есть флаг что такое есть рано или поздно он сработает

    • @sleepyNovember_project
      @sleepyNovember_project 11 місяців тому

      @@anatolyvatson2542 ну как успехи? =)

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

    Это тот самый контент, который будет актуален всегда, но или пока живо программирование)

  • @vladimirdiadichev6140
    @vladimirdiadichev6140 7 років тому +12

    Спасибо

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

    твои видеоуроки заменяют целую учебную программу

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

    Комментарий для поддержки канала.
    Спасибо за Ваши видео, очень все предельно ясно!

  • @АлександрБилык-и7м
    @АлександрБилык-и7м 5 років тому +1

    Спасибо за Вашу работу!

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

    Автор - большое вам спасибо!

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

    Спасибо за урок, чем дальше тем интереснее:)))

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

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

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

      поддерживаю!!! уроки всегда на высоте )

  • @whynot3052
    @whynot3052 7 років тому +17

    #SimpleCode
    спасибо

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

    Пример с оружием просто пушкабомбапетарда, однозначно лайк:)

  • @АлексейЕршов-у3г
    @АлексейЕршов-у3г 5 років тому +3

    После ваших уроков кресты постепенно перестают быть неподъёмной "магией".
    Большое спасибо!

  • @overdoses1794
    @overdoses1794 7 років тому +8

    void Overdoses(*Thank you){cout

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

    Гениальное обьяснение!!!!! СПАСИБО!!!!

  • @anotherpain9120
    @anotherpain9120 2 роки тому +1

    По кайфу, благодарствую!

  • @ОлегЖариков-ь1ы
    @ОлегЖариков-ь1ы 7 років тому +30

    Будут ли в будущем уроки, с поддержкой библиотеки SDL, либо других графических биб. ? И вообще, будем ли делать начиная с мини-игр, до более менее качественных 3D ?✊

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

      Про STL уже есть(следующие пару месяцев сам планирую потратить на увлекательный просмотр всего этого добра) А про игры не знаю. Наверно уже и игры есть, раз наш родной SimpleCode уже по c# уроки делает)

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

      @@kemsekov6331 sdl, а не stl

    • @NONAME-wb7fv
      @NONAME-wb7fv Рік тому +2

      STL, а не SDL

    • @ОлегЖариков-ь1ы
      @ОлегЖариков-ь1ы Рік тому +1

      @@NONAME-wb7fv наконец-то дождался ответа)

  • @НикитаБеженарь-ы5й
    @НикитаБеженарь-ы5й 5 років тому +1

    Шикарно обьяснил , красава!!

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

    спасибо огромное бро!!! все понятно рассказал!

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

    Лучший!

  • @ЛевПрав-л3у
    @ЛевПрав-л3у 4 роки тому

    бооооже, это же ааааахуенно. и уроки, и полиморфизм. это... тупа топ. прекрасное изложение. суперлайк !

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

    Полезный урок. Спасибо.

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

    На примере компьютерной игры в разы понятнее. Спасибо!!!

  • @Antonov_Ivan.
    @Antonov_Ivan. Рік тому

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

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

    Получается в уроке #98, где был студент и студент-заочник, у которых был метод Learn(), мы неправильно писали реализацию? То есть всегда надо писать virtual и override, если переопределяется метод? Или есть случаи, когда не надо писать это?

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

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

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

    пока смотрел сошел с ума два раза, спасибо

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

    Если мы у SMG вызовем метод Shoot и не передадим туда параметров, то пистолет-пулемёт выстрелит нам в ногу XD

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

    Прекрасное объяснение!

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

    Спасибо большое!

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

    Молодец во всем !!!

  • @ГлебДомрачев-ь7э
    @ГлебДомрачев-ь7э 4 роки тому +1

    Думаю по принципу, как бы строгой иерархии, если мы заходим ссылаемся через главный вход родительского класса, мы с тем же успехом попадем в нужную нам квартиру, у которой своя особая реализация(полиморфизм) как если бы мы шли туда напрямую, через балкон, окно или вертолетную площадку. То есть мы получим "Bang! Bang! Bang".
    Все зависит от адреса взятого класса, и наличия ключевого слова virtual.

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

    Спасибо за "задолбаемся"! 18:40 :)

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

    Благодарю за урок учитель! :)

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

    За уроки по любому лайк!

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

    Помогите, я зависим... Это просто так интересноо

  • @НастяВойтенко-ж3к
    @НастяВойтенко-ж3к 2 роки тому

    Дякую! Вже 103 уроки позаду, ух)

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

    ОФИГЕННО!

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

    Кстати, в проге, которую написал Сергей, возможен случай, когда Player может стрелять объектами Player. xD

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

      Vova Nahirny считай бьет кулаками👌

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

      Невозможен. Так как метод принимает указатель только на класс Gun и унаследованные от него. И сигнатура у метода другая.

  • @mykhailomorhal2181
    @mykhailomorhal2181 7 років тому +3

    Спасибо)

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

    Спасибо *большущее* !

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

    Крутой урок!!!

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

    Удобная тема

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

    BADABOOM!!! Спасибо, за урок!!!:)

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

    Спасибо!!!

  • @СергейНазаров-т3ш
    @СергейНазаров-т3ш 3 роки тому +1

    Реализовал так же только с настройками для звука гитары, мол чистый звук, дисторшн, овердрайв)

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

    Очень хорошие уроки!
    Одно но, стоило метод в классе Player назвать как-то иначе чем Shoot(), иначе возможно новички могут подумать что они должны обязательно называться одинаково для полиморфизма.

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

    А если у нас есть такая ситуация... Допустим, что игроку придётся как-то по - другому держать каждое оружие. Придётся тогда менять логику в классе Player для каждого конкретного метода типа shoot. Или можно в классе конкретного оружия указать поведение для него. Например класс Bazooka содержит метод шут, в котором реализуется тип стрельбы, то как игрок держит оружие, отдача, звук от выстрела и т.д.

  • @aram.nett1
    @aram.nett1 6 років тому +1

    Спасибо братан

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

    Супер!

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

    мне теперь придётся по утрам смотреть ваши уроки после 1 сентября, ибо я перешёл в 11 класс, который у нас в школе учится на второй смене(((
    Но всё равно буду смотреть, несмотря ни на что :)

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

      Привет как успехи, может куда поступил за 3 года?

  • @sleepyNovember_project
    @sleepyNovember_project 11 місяців тому

    После уроков про перегрузки операторов, это как отдых

  • @ВладОся-з7ь
    @ВладОся-з7ь Рік тому

    Браво 👏 👏 👏 👏 👏