Абстрактный класс с++ пример. Чисто виртуальная функция. virtual. override. Полиморфизм ООП C++

Понравилось видео или оказалось полезным? Подпишись!
Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут! =)
www.donationalerts.ru/r/simple...
или тут
/ simplecode
Абстрактный класс с++ пример. Чисто виртуальная функция. virtual. override. Полиморфизм ООП C++ Для начинающих. Урок #104
Исходный код урока:
topic-142292681_35943080
Виртуальные методы класса c++. Ключевое слово virtual. Ключевое слово override. ООП. C++ #103
goo.gl/cuW4cY
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit

Пікірлер: 173

  • @SimpleCodeIT
    @SimpleCodeIT6 жыл бұрын

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

  • @user-je5yr6ol6c

    @user-je5yr6ol6c

    6 жыл бұрын

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

  • @deniskozak5997

    @deniskozak5997

    6 жыл бұрын

    лучше чем-то более серьезным заниматься, нежели игрушками

  • @user-je5yr6ol6c

    @user-je5yr6ol6c

    6 жыл бұрын

    Еще вопрос, разработка нейро-сетей на ЯП - C++ , будет ? Ведь, на нем тоже можно их разрабатывать, чтобы уже более-менее понимать структуру и их алгоритм.

  • @bobrovskij100

    @bobrovskij100

    4 жыл бұрын

    Снимите, пожалуйста, видео о том, как разделять проект на файлы и как это всё подключать между собой, как подключать сторонние библиотеки, создавать свои, или просто как подключить готовый класс к проекту. Как пользоваться hex-редакторами и cmake для С++.

  • @elemantro5257

    @elemantro5257

    4 жыл бұрын

    мне кажется или это паттерн стратегия?

  • @DenKof81
    @DenKof815 жыл бұрын

    От кофемолки до ножа всего за 31 VJUHHH! :)

  • @Chepotay
    @Chepotay6 жыл бұрын

    Вжух! И я вспомнил как работают абстрактные классы в С++.

  • @SimpleCodeIT

    @SimpleCodeIT

    6 жыл бұрын

    Всё правильно понял! =)

  • @proKaps
    @proKaps6 жыл бұрын

    Годнота. Это самые лучшие уроки вообще которые я когда-либо встречал. Правда смотрю на скорости 1.5 х)

  • @iryandriver

    @iryandriver

    5 жыл бұрын

    Чайники на 0.25 смотрят))

  • @developer-miracle

    @developer-miracle

    5 жыл бұрын

    а я с обычной скоростью, но только ставлю на паузу, чтоб повторить все действия в IDE ;)

  • @user-lz1yb6qk3f

    @user-lz1yb6qk3f

    3 жыл бұрын

    ×2

  • @romasenkevich9907

    @romasenkevich9907

    3 жыл бұрын

    Райан Купер можно смотреть в х4, но это нужно будет в код ютуба лезть в гугл хроме

  • @Kokurorokuko

    @Kokurorokuko

    2 жыл бұрын

    @@developer-miracle как по мне, лучше сначала посмотреть, а потом писать код самому. Заодно и проверяешь, как запомнил.

  • @kaynsolo
    @kaynsolo6 жыл бұрын

    Тема с оружием крутяк! Спасибо.

  • @Salavat1k
    @Salavat1k5 жыл бұрын

    . class Player | class Weapon (virtual) | | | class Gun class Bazooka class Knife | class SubMashineGun Получается так: - класс "Игрок" содержит функцию "Стрелять", - соответственно возникает вопрос "чем стрелять?" и в функции производится обращение к абстрактному классу "Оружие" . - у класса три наследника пистолет, базука, нож, а у пистолета наследник пулемет. Через наследование передаются все свойства класса "оружие". - В майн создается объект "игрок", вызывается функция "стрелять" в ней указывается на оружие вообще, а потом уточняется то, чем именно действовать. Т.о. получается, что виртуальный класс просто служит для предварительного указания, того, что с оружием будет производится какое то действие в классах наследниках, а само действие зависит от типа выбранного оружия. Ок. надеюсь понял правильно. Спасибо.

  • @user-iq5of8vu7e

    @user-iq5of8vu7e

    4 жыл бұрын

    стрелять могут и мобы

  • @shibu5180

    @shibu5180

    Жыл бұрын

    @@user-iq5of8vu7e а у нас нету мобов

  • @SeshAlex
    @SeshAlex6 жыл бұрын

    Спасибо. Вы лучший педагог с++:)))

  • @sgimancs
    @sgimancs4 жыл бұрын

    Это конкуренты с их барахлом похоже ставят дизлайки т. к. до этого уровня изложения не тянут.

  • @user-lr2ls1ix3z
    @user-lr2ls1ix3z5 жыл бұрын

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

  • @nazarmarhotskiy7372

    @nazarmarhotskiy7372

    5 жыл бұрын

    +

  • @Matissed

    @Matissed

    3 жыл бұрын

    как успехи?

  • @mrgold8267

    @mrgold8267

    Жыл бұрын

    Ну вот уже 3 года прошло, стал прогером? где работаешь, кем работаешь ?

  • @soundsforgamers4056
    @soundsforgamers4056 Жыл бұрын

    Дружище, у тебя есть талант объяснять людям непонятные вещи на понятных примерах. Всё очень доходчиво. Надеюсь ты вернешься на KZread и будешь дальше использовать свой талант в просветительских целях. Желаю удачи.

  • @Riderwin
    @Riderwin6 жыл бұрын

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

  • @MrMes

    @MrMes

    4 жыл бұрын

    аххахахаха, то есть ты не можешь в проводнике в IDE добавить файлы и в файле, где нужен функционал написать инклюды?

  • @rednil8242

    @rednil8242

    4 жыл бұрын

    @@MrMes все думают, что это легко, пока пару книг по теме не почитают.

  • @Matissed

    @Matissed

    3 жыл бұрын

    @@rednil8242 забей, это ебаные токсики, думающие, что они дохуя знающие программисты

  • @_Yes_.

    @_Yes_.

    Жыл бұрын

    @@MrMes чел

  • @princessmary5556

    @princessmary5556

    11 ай бұрын

    @@rednil8242 И прочитав пару книг, понимают, что это ещё проще, чем казалось вначале.

  • @user-ne6dt8gv3o
    @user-ne6dt8gv3o4 жыл бұрын

    Лучшие уроки по программированию во вселенной!

  • @tsohee9145
    @tsohee91455 жыл бұрын

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

  • @nazarmarhotskiy7372
    @nazarmarhotskiy73725 жыл бұрын

    Контент просто супер. Твои уроки не раз спасали меня когда не знал как лабораторку сделать. Спасибо огромное.

  • @Ermine882
    @Ermine8826 жыл бұрын

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

  • @alexlyt9104
    @alexlyt91046 жыл бұрын

    Ті по поводу примеров правильно говориш, твоя история про игру змейка супер. Сделай раздел практикум. Давай в разделе по порядку сделаем с начала консольную, потом виндозную, потом сетевую и т.д. как ті рассказывал. Донат должен быть хорошим.

  • @veter4699
    @veter46996 жыл бұрын

    Очередной раз спасибо за интересный урок!

  • @minsk150
    @minsk1503 жыл бұрын

    НЕ перестаю радоваться! как суперски все обьясняется! Спасибо снова!

  • @user-ny4zk7gj7n
    @user-ny4zk7gj7n2 ай бұрын

    ООП - это красота!🤩

  • @tesalovskiy
    @tesalovskiy5 жыл бұрын

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

  • @user-nb1wv1vu9m
    @user-nb1wv1vu9m2 ай бұрын

    Кайф, спасибо за отличное объяснение

  • @user-pk2ul8of6p
    @user-pk2ul8of6p4 жыл бұрын

    Эти уроки просто спасают меня перед экзаменом!!! Спасибо большое

  • @dezign_er
    @dezign_er6 жыл бұрын

    Спасибо за видео !

  • @user-ne3vq6jv8z
    @user-ne3vq6jv8z6 жыл бұрын

    прекрасное изложение. лайкаю все подряд. желаю Вашем каналу успеха

  • @SimpleCodeIT

    @SimpleCodeIT

    6 жыл бұрын

    Благодарю за поддержку!

  • @user-yb4jd6re6k
    @user-yb4jd6re6k4 жыл бұрын

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

  • @meatboy4010
    @meatboy40106 жыл бұрын

    Перед курсачем по ООП - самое то!

  • @segars9604
    @segars96048 ай бұрын

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

  • @riinariina41
    @riinariina415 жыл бұрын

    Огромное спасибо за уроки. Очень помогают

  • @user-ut7tj6bp4t
    @user-ut7tj6bp4t4 жыл бұрын

    Я был неправ, ЭТО самый интересный урок из плейлиста, а не предыдущий))

  • @SimpleCodeIT
    @SimpleCodeIT6 жыл бұрын

    #абстрактныйкласс #чистовиртуальнаяфункция #ООП #SimpleCode #урокипрограммирования

  • @vladalu9794
    @vladalu97946 жыл бұрын

    Очень интересный урок, большое спасибо!!!

  • @user-bc4vi6hl2f
    @user-bc4vi6hl2f6 жыл бұрын

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

  • @user-nw5iw5ew9z
    @user-nw5iw5ew9z3 жыл бұрын

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

  • @bulba1995
    @bulba1995 Жыл бұрын

    Еще один хороший урок ,мое почтение.

  • @satisfiedCapybara
    @satisfiedCapybara4 жыл бұрын

    Спасибо большое за ваши старания!

  • @Ivan-Shyriaiev
    @Ivan-Shyriaiev4 жыл бұрын

    *ТОП* Уроки ! Спасибо большое!

  • @user-jl7et8gx5u
    @user-jl7et8gx5u6 жыл бұрын

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

  • @lizagodaeva4678
    @lizagodaeva46784 жыл бұрын

    Вы великолепны, спасибо!

  • @Phocusnick
    @Phocusnick Жыл бұрын

    Это просто идеально, тем-более во время дистанционки.

  • @konstantingorskiy5716
    @konstantingorskiy57165 жыл бұрын

    Чувак, просто супер видосы , в универе очень помогает

  • @garivasiukov1897
    @garivasiukov18972 ай бұрын

    лучший, спасибо большое, очень помог!!!)))

  • @user-xg9yp2cs5x
    @user-xg9yp2cs5x2 жыл бұрын

    Спасибо! Просто и ясно.

  • @yugenepopov2014
    @yugenepopov20147 ай бұрын

    Огромнейшее спасибо

  • @simanerush
    @simanerush5 жыл бұрын

    Спасибо огромное!

  • @Ivan-Shyriaiev
    @Ivan-Shyriaiev4 жыл бұрын

    Круть! Сделал пару штук #include #include #include #include #define cls system("cls") #define gtch _getch() using namespace std; void colorText(int color); class Transport { public: Transport() { name = "noname"; } Transport(string name) { this->name = name; } string getName() { return name; } void setName(string name) { this->name = name; } virtual void ride() = 0; virtual void info() = 0; private: string name; }; class Sportcar :public Transport { class Engine; public: Sportcar() :Transport() { engine.turnEngineOff(); } Sportcar(string name) :Transport(name) { } void turnEngineOn() { engine.turnEngineOn(); } void turnEngineOff() { engine.turnEngineOff(); } void coutEngineInfo() { engine.showEngine(); } void ride() override { if (engine.boolWorking()) cout

  • @cnota69

    @cnota69

    3 жыл бұрын

    Хах, прикольно чел. Интересно было почитать историю)

  • @ruslandad365

    @ruslandad365

    7 ай бұрын

    Нихрена тебя понесло)

  • @justcode5626
    @justcode56263 жыл бұрын

    Четко получилось!

  • @moratoPg
    @moratoPg6 жыл бұрын

    Дуже хороший урок , і взагалі всі уроки мають прекрасне розяснення . Спочатку трохи здається все запутаним бо багато англійськомовних слів і невидно всього коду на екрані , але якщо переглянути пару разів то вимальовується більш зрозуміла логіка того що автор відео хоче передати . Перед уроком бажано доповідати які знання вже потрібно мати щоб зрозуміти дане відео Дякую за уроки , взагалі прекрасна подача інформації , всім раджу переглядати дані відео декілька разів щоб краще усвоїти конкретну тему уроку

  • @llllNEOllllchannel

    @llllNEOllllchannel

    6 жыл бұрын

    ??? зачем этот c++, лучше буду украинский учить

  • @romsik2949

    @romsik2949

    4 жыл бұрын

    @@llllNEOllllchannel Выучил?

  • @llllNEOllllchannel

    @llllNEOllllchannel

    4 жыл бұрын

    @@romsik2949 дi

  • @Cyanidez07
    @Cyanidez073 жыл бұрын

    круто! потренировался со своими классами+ попробовал передать в функцию массив адресов по ссылке используя std::vector.

  • @vladimirdiadichev6140
    @vladimirdiadichev61406 жыл бұрын

    Спасибо

  • @evgeniisharaborin8071
    @evgeniisharaborin80712 жыл бұрын

    Спасибо за крутое объяснение)

  • @deniskozak5997
    @deniskozak59976 жыл бұрын

    спасибо за урок, будет ли видео урок про то чем абстрактный класс отличается от интерфейса и что такое интерфейс?

  • @McGewen
    @McGewen Жыл бұрын

    Круто!Дуже вдячний!

  • @seredas3565
    @seredas3565 Жыл бұрын

    Спасибо за рекомендацию отладчика, без него было сложнее годные советы)

  • @yurabazhan2485
    @yurabazhan24853 жыл бұрын

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

  • @user-fy1tn2nq6z
    @user-fy1tn2nq6z8 ай бұрын

    Вы легенда!

  • @kaisaryerdenbekov1588
    @kaisaryerdenbekov15886 жыл бұрын

    Кто-то влепил чисто абстрактный дизлайк.

  • @Mark-wn4op
    @Mark-wn4op3 жыл бұрын

    Скорость x2 и это просто лучшие видео

  • @sergbo3114
    @sergbo31144 жыл бұрын

    Вот недавно в процессе написания одного из классов зачудил. При отладке выяснил что при вызове виртуальной функции вызывается не функция в потомке, что как бы было должно быть при переопределении в дочернем классе, а вызывалась функция в базовом. И когда я убрал пустую реализацию из базового класса, то Runtime начал выдавать ошибку "abort()". Оказалось, по невнимательности я вызывал эту функцию из конструктора)) Получалось что класс еще был не сконструирован. Т.е. как раз получилось тот случай "что будет если инстанцировать абстрактный класс", ну в данном случае просто виртуальную функцию, но я думаю разница не большая. Получится просто рантайм еррор.

  • @ruslandad365
    @ruslandad3657 ай бұрын

    Ляяя Теперь я начинаю понимать как работает Анрил

  • @seregapikulev9834
    @seregapikulev98344 жыл бұрын

    Спасибо!

  • @bama2619
    @bama26192 жыл бұрын

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

  • @t.on.y
    @t.on.y6 жыл бұрын

    а ты расскажешь про win32 api?

  • @exploserester6041

    @exploserester6041

    2 жыл бұрын

    Это для интерфейса? Если да, лучше используй Qt)

  • @miroslavklyukovsky683
    @miroslavklyukovsky6832 жыл бұрын

    Спасибо!!!

  • @ivanliaz
    @ivanliaz2 ай бұрын

    Ну вот и геймдев пошёл))

  • @user-jt4fx8fd7c
    @user-jt4fx8fd7c9 ай бұрын

    Лучший ❤

  • @user-up8cn6ri9k
    @user-up8cn6ri9k Жыл бұрын

    Спасибо брат

  • @shestak.E
    @shestak.E11 ай бұрын

    Чисто теоретически можно такой вид программы реализовать с помощью функции с вложенным switch

  • @sleepyNovember_project

    @sleepyNovember_project

    4 ай бұрын

    А с if else так вообще всё возможно xd

  • @Nikitunr2013
    @Nikitunr20132 жыл бұрын

    В разы понятнее объясняешь, чем преподы большого универа

  • @user-ld3gf1tl1f
    @user-ld3gf1tl1fАй бұрын

    бро даже в 2024 году твои уроки имбире

  • @user-ol9es1ch9x
    @user-ol9es1ch9x Жыл бұрын

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

  • @arismendi7101
    @arismendi71016 жыл бұрын

    Здраствуйте, можете сделать видео о рандомной генерации лабиринта с помощью рекурсивной функции?

  • @user-kb6qd8rg4g
    @user-kb6qd8rg4g4 жыл бұрын

    спасибо

  • @gagikarakelyan6014
    @gagikarakelyan60144 жыл бұрын

    лучший

  • @ekaterina1991
    @ekaterina19916 жыл бұрын

    Спасибо огромное, Сергей. Подскажите, пожалуйста, а как лучше в main реализовывать смену оружия? С помощью просто switch или есть более грамотная реализация?

  • @TheWladberlin

    @TheWladberlin

    4 жыл бұрын

    Массив указателей, думаю

  • @WormsWolf1
    @WormsWolf16 жыл бұрын

    Немного не понял как будут деструкторы вызываться. У класса Weapon будет вызван деструктор или нет?

  • @user-zg9du7nu9q
    @user-zg9du7nu9q6 ай бұрын

    напоминает создание конфига вооружения в ARMA 2

  • @dimaan29
    @dimaan293 жыл бұрын

    Тема с оружием достаточно наглядна до тех пор, пока не появляются указатели (геморр). По вашим урокам учу С#, то есть все ваши уроки на С++ перевожу в С#, только вот беда, указатели никак не хотят работать в этом майкрософтовском языке, даже через режим unsafe. Поэтому никак не могу заставить класс Player работать со всеми видами оружия на C#

  • @user-yx5wd5yy6h
    @user-yx5wd5yy6h3 жыл бұрын

    вжууух - и мы переопределили виртуальную функцию

  • @KocTu4eK
    @KocTu4eK2 жыл бұрын

    в прошлом уроке сильно не хватает пэинта (имхо), пришлось самому додумывать «кто такой этот ваш полеморфизм» на ходу урока, что очень отвлекало

  • @flepjack
    @flepjack3 жыл бұрын

    Понято

  • @user-sx4se9sd5c
    @user-sx4se9sd5c4 жыл бұрын

    Сергей, а вы с Unreal Engine знакомы?

  • @flatmapper
    @flatmapper6 жыл бұрын

    Нам в универе говорят, что существует 2 вида полиморфизма : времени компиляции и времени выполнения. Какой в данном уроке показываете вы?

  • @user-je5yr6ol6c
    @user-je5yr6ol6c6 жыл бұрын

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

  • @SimpleCodeIT

    @SimpleCodeIT

    6 жыл бұрын

    Игры будут в отдалённом будущем на Unity.

  • @user-je5yr6ol6c

    @user-je5yr6ol6c

    6 жыл бұрын

    Еще вопрос, разработка нейро-сетей на ЯП - C++ , будет ? Ведь, на нем тоже можно их разрабатывать, чтобы уже более-менее понимать структуру и их алгоритм.

  • @OXEED12
    @OXEED12Ай бұрын

    👍

  • @annademidenko6356
    @annademidenko63565 жыл бұрын

  • @mariasparrow5965
    @mariasparrow59654 жыл бұрын

    а если у меня есть класс геометрические фигуры и дано там, к примеру, круг, треугольник, сферу, цилиндр и конус, то чтобы это написать, мне нужно будет еще создать класс "плоскостные" и "пространственные"? ну так как ружье в вашем случае?

  • @nokompromis2297
    @nokompromis22974 жыл бұрын

    Knife.Shoot()...Нож же и шпионский бывает...

  • @GottyMintly
    @GottyMintly3 жыл бұрын

    Разработчик: потеет несколько дней, работая над кодом для шутера. Пистолет: стреляет Пистолет-пулемет: стреляет Гранатомёт: стрелеят Нож: доброе утро))0)

  • @tolegator2623
    @tolegator26232 жыл бұрын

    А можно в абстрактном родительском классе объявить статическое поле? Оно будет доступно всем потомкам?

  • @Viamsupervadetvadens
    @Viamsupervadetvadens6 жыл бұрын

    up

  • @user-pashaspr
    @user-pashaspr3 жыл бұрын

    Прикольно,если туда пули как то пристроить)

  • @rachelraichi9494
    @rachelraichi9494 Жыл бұрын

    14:07 я сначала подумала, что напишет stab😅

  • @sleepyNovember_project

    @sleepyNovember_project

    4 ай бұрын

    Ну получается стреляем ножами, тоже вполне себе неплохо

  • @stenzoautomatic
    @stenzoautomatic5 ай бұрын

    Красавчик, Серёга ты как там? Жив, здоров? Отзовись ( если что то он с Украины, и говорил что из-за войны пока не сможет поддерживать канал). Или может кто в курсе как он? Жалею что у меня не было такого препода!!!

  • @mulahivan
    @mulahivan3 жыл бұрын

    Ну, не сложно

  • @alexeytrofimov2232
    @alexeytrofimov22323 жыл бұрын

    ✊🏻

  • @Vov4ik048
    @Vov4ik0483 жыл бұрын

    почему передается указатель, а не использовать ссылку?

  • @user-ni9tf5yr6m
    @user-ni9tf5yr6m4 жыл бұрын

    Уууу !Террорист ! Взрывать людей учишь (Like❤)

  • @Max-hc8we
    @Max-hc8we5 жыл бұрын

    Можете объяснить в чём смысл абстрактного класса? Ведь с тем же успехом я могу написать: class Weapon { public: void virtual Shoot( ){ } }; Это будет виртуальный метод без реализации. Согласен, будет возможность создать объект данного класса, но тогда, опять же, можно не писать никакой реализации

  • @TheWladberlin

    @TheWladberlin

    4 жыл бұрын

    Я думаю просто для удобства. Смысл объединить под одним классом какую-то область - в данном случае это "оружие". И далее в классе Player ты обращаешься только к этому классу.

  • @serzhant7169

    @serzhant7169

    4 жыл бұрын

    В том то и дело что нам нужен класс от которого нельзя создавать объекты. Это тебе сейчас хорошо, что у тебя метод возвращает void и ты просто написал { }, а если метод будет не void? Будешь писать return что-то? костыль получается

  • @alexandrsargsyan2202
    @alexandrsargsyan22022 жыл бұрын

    like

  • @sanyahladunyk3269
    @sanyahladunyk32694 жыл бұрын

    Как можно быстро закомментировать выделенный код?

  • @user-rr5bz4zs5u

    @user-rr5bz4zs5u

    4 жыл бұрын

    выделить участок кода и нажать сначала ctrl+k потом ctrl+c

  • @AltaiHerbalist

    @AltaiHerbalist

    Жыл бұрын

    Ctrl + Shift + /

Келесі