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

  Рет қаралды 150,315

#SimpleCode

#SimpleCode

6 жыл бұрын

Понравилось видео или оказалось полезным? Подпишись!
Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут! =)
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
@SimpleCodeIT 6 жыл бұрын
*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
@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
@DenKof81 5 жыл бұрын
От кофемолки до ножа всего за 31 VJUHHH! :)
@Chepotay
@Chepotay 6 жыл бұрын
Вжух! И я вспомнил как работают абстрактные классы в С++.
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
Всё правильно понял! =)
@proKaps
@proKaps 6 жыл бұрын
Годнота. Это самые лучшие уроки вообще которые я когда-либо встречал. Правда смотрю на скорости 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 3 жыл бұрын
@@developer-miracle как по мне, лучше сначала посмотреть, а потом писать код самому. Заодно и проверяешь, как запомнил.
@kaynsolo
@kaynsolo 6 жыл бұрын
Тема с оружием крутяк! Спасибо.
@SeshAlex
@SeshAlex 6 жыл бұрын
Спасибо. Вы лучший педагог с++:)))
@Salavat1k
@Salavat1k 5 жыл бұрын
. class Player | class Weapon (virtual) | | | class Gun class Bazooka class Knife | class SubMashineGun Получается так: - класс "Игрок" содержит функцию "Стрелять", - соответственно возникает вопрос "чем стрелять?" и в функции производится обращение к абстрактному классу "Оружие" . - у класса три наследника пистолет, базука, нож, а у пистолета наследник пулемет. Через наследование передаются все свойства класса "оружие". - В майн создается объект "игрок", вызывается функция "стрелять" в ней указывается на оружие вообще, а потом уточняется то, чем именно действовать. Т.о. получается, что виртуальный класс просто служит для предварительного указания, того, что с оружием будет производится какое то действие в классах наследниках, а само действие зависит от типа выбранного оружия. Ок. надеюсь понял правильно. Спасибо.
@user-iq5of8vu7e
@user-iq5of8vu7e 4 жыл бұрын
стрелять могут и мобы
@shibu5180
@shibu5180 Жыл бұрын
@@user-iq5of8vu7e а у нас нету мобов
@user-lr2ls1ix3z
@user-lr2ls1ix3z 5 жыл бұрын
Мужик, ты просто лучший, только благодоря тебе я захотел стать программистом (и у меня это получается) и меня не выперли с универа. Самые топовые уроки по программированию.
@nazarmarhotskiy7372
@nazarmarhotskiy7372 5 жыл бұрын
+
@Matissed
@Matissed 3 жыл бұрын
как успехи?
@mrgold8267
@mrgold8267 Жыл бұрын
Ну вот уже 3 года прошло, стал прогером? где работаешь, кем работаешь ?
@user-ne6dt8gv3o
@user-ne6dt8gv3o 4 жыл бұрын
Лучшие уроки по программированию во вселенной!
@soundsforgamers4056
@soundsforgamers4056 Жыл бұрын
Дружище, у тебя есть талант объяснять людям непонятные вещи на понятных примерах. Всё очень доходчиво. Надеюсь ты вернешься на KZbin и будешь дальше использовать свой талант в просветительских целях. Желаю удачи.
@alexlyt9104
@alexlyt9104 6 жыл бұрын
Ті по поводу примеров правильно говориш, твоя история про игру змейка супер. Сделай раздел практикум. Давай в разделе по порядку сделаем с начала консольную, потом виндозную, потом сетевую и т.д. как ті рассказывал. Донат должен быть хорошим.
@Riderwin
@Riderwin 6 жыл бұрын
Сними пожалуйста видео о том, как разделять проект на файлы и как это всё подключать между собой, как подключать сторонние библиотеки, создавать свои, или просто как подключить готовый класс к проекту. Я пытался в это разобраться, но как-то сложно.
@MrMes
@MrMes 4 жыл бұрын
аххахахаха, то есть ты не можешь в проводнике в IDE добавить файлы и в файле, где нужен функционал написать инклюды?
@rednil8242
@rednil8242 4 жыл бұрын
@@MrMes все думают, что это легко, пока пару книг по теме не почитают.
@Matissed
@Matissed 3 жыл бұрын
@@rednil8242 забей, это ебаные токсики, думающие, что они дохуя знающие программисты
@_Yes_.
@_Yes_. 2 жыл бұрын
@@MrMes чел
@princessmary5556
@princessmary5556 Жыл бұрын
@@rednil8242 И прочитав пару книг, понимают, что это ещё проще, чем казалось вначале.
@user-nb1wv1vu9m
@user-nb1wv1vu9m 3 ай бұрын
Кайф, спасибо за отличное объяснение
@user-ny4zk7gj7n
@user-ny4zk7gj7n 3 ай бұрын
ООП - это красота!🤩
@Ermine882
@Ermine882 6 жыл бұрын
Спасибо за урок.
@nazarmarhotskiy7372
@nazarmarhotskiy7372 5 жыл бұрын
Контент просто супер. Твои уроки не раз спасали меня когда не знал как лабораторку сделать. Спасибо огромное.
@tsohee9145
@tsohee9145 5 жыл бұрын
Вы настолько хорошо объясняете, что я на прошлом уроке уже что то похожее написал, правда вместо виртуальной сделал просто пустую функцию. Все и так работает.
@veter4699
@veter4699 6 жыл бұрын
Очередной раз спасибо за интересный урок!
@minsk150
@minsk150 3 жыл бұрын
НЕ перестаю радоваться! как суперски все обьясняется! Спасибо снова!
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
#абстрактныйкласс #чистовиртуальнаяфункция #ООП #SimpleCode #урокипрограммирования
@user-yb4jd6re6k
@user-yb4jd6re6k 4 жыл бұрын
супер, все очень понятно. Спасибо за классную работу.
@tesalovskiy
@tesalovskiy 5 жыл бұрын
Спасибо за отличный урок! После просмотра мысли и правда собираются в одно единое знание, которое не стыдно попробовать на практике.
@sgimancs
@sgimancs 5 жыл бұрын
Это конкуренты с их барахлом похоже ставят дизлайки т. к. до этого уровня изложения не тянут.
@dezign_er
@dezign_er 6 жыл бұрын
Спасибо за видео !
@riinariina41
@riinariina41 5 жыл бұрын
Огромное спасибо за уроки. Очень помогают
@user-pk2ul8of6p
@user-pk2ul8of6p 4 жыл бұрын
Эти уроки просто спасают меня перед экзаменом!!! Спасибо большое
@vladalu9794
@vladalu9794 6 жыл бұрын
Очень интересный урок, большое спасибо!!!
@user-nw5iw5ew9z
@user-nw5iw5ew9z 3 жыл бұрын
Огромное спасибо, Сергей, очень интересно и доходчиво!
@bulba1995
@bulba1995 Жыл бұрын
Еще один хороший урок ,мое почтение.
@segars9604
@segars9604 9 ай бұрын
Благодарю за бесценную работу!
@satisfiedCapybara
@satisfiedCapybara 4 жыл бұрын
Спасибо большое за ваши старания!
@meatboy4010
@meatboy4010 6 жыл бұрын
Перед курсачем по ООП - самое то!
@user-bc4vi6hl2f
@user-bc4vi6hl2f 6 жыл бұрын
Спасибо за урок!
@user-ne3vq6jv8z
@user-ne3vq6jv8z 6 жыл бұрын
прекрасное изложение. лайкаю все подряд. желаю Вашем каналу успеха
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
Благодарю за поддержку!
@user-jl7et8gx5u
@user-jl7et8gx5u 6 жыл бұрын
Спасибо за уроки
@Ivan-Shyriaiev
@Ivan-Shyriaiev 4 жыл бұрын
*ТОП* Уроки ! Спасибо большое!
@lizagodaeva4678
@lizagodaeva4678 4 жыл бұрын
Вы великолепны, спасибо!
@Phocusnick
@Phocusnick 2 жыл бұрын
Это просто идеально, тем-более во время дистанционки.
@konstantingorskiy5716
@konstantingorskiy5716 5 жыл бұрын
Чувак, просто супер видосы , в универе очень помогает
@user-ut7tj6bp4t
@user-ut7tj6bp4t 4 жыл бұрын
Я был неправ, ЭТО самый интересный урок из плейлиста, а не предыдущий))
@simanerush
@simanerush 5 жыл бұрын
Спасибо огромное!
@Cyanidez07
@Cyanidez07 3 жыл бұрын
круто! потренировался со своими классами+ попробовал передать в функцию массив адресов по ссылке используя std::vector.
@user-xg9yp2cs5x
@user-xg9yp2cs5x 2 жыл бұрын
Спасибо! Просто и ясно.
@garivasiukov1897
@garivasiukov1897 3 ай бұрын
лучший, спасибо большое, очень помог!!!)))
@yugenepopov2014
@yugenepopov2014 7 ай бұрын
Огромнейшее спасибо
@vladimirdiadichev6140
@vladimirdiadichev6140 6 жыл бұрын
Спасибо
@justcode5626
@justcode5626 3 жыл бұрын
Четко получилось!
@McGewen
@McGewen Жыл бұрын
Круто!Дуже вдячний!
@seregapikulev9834
@seregapikulev9834 4 жыл бұрын
Спасибо!
@yurabazhan2485
@yurabazhan2485 3 жыл бұрын
Спасибо за урок
@moratoPg
@moratoPg 6 жыл бұрын
Дуже хороший урок , і взагалі всі уроки мають прекрасне розяснення . Спочатку трохи здається все запутаним бо багато англійськомовних слів і невидно всього коду на екрані , але якщо переглянути пару разів то вимальовується більш зрозуміла логіка того що автор відео хоче передати . Перед уроком бажано доповідати які знання вже потрібно мати щоб зрозуміти дане відео Дякую за уроки , взагалі прекрасна подача інформації , всім раджу переглядати дані відео декілька разів щоб краще усвоїти конкретну тему уроку
@llllNEOllllchannel
@llllNEOllllchannel 6 жыл бұрын
??? зачем этот c++, лучше буду украинский учить
@romsik2949
@romsik2949 4 жыл бұрын
@@llllNEOllllchannel Выучил?
@llllNEOllllchannel
@llllNEOllllchannel 4 жыл бұрын
@@romsik2949 дi
@user-jt4fx8fd7c
@user-jt4fx8fd7c 9 ай бұрын
Лучший ❤
@evgeniisharaborin8071
@evgeniisharaborin8071 2 жыл бұрын
Спасибо за крутое объяснение)
@user-fy1tn2nq6z
@user-fy1tn2nq6z 9 ай бұрын
Вы легенда!
@seredas3565
@seredas3565 Жыл бұрын
Спасибо за рекомендацию отладчика, без него было сложнее годные советы)
@miroslavklyukovsky683
@miroslavklyukovsky683 2 жыл бұрын
Спасибо!!!
@bama2619
@bama2619 2 жыл бұрын
Спасибо Все понятно
@deniskozak5997
@deniskozak5997 6 жыл бұрын
спасибо за урок, будет ли видео урок про то чем абстрактный класс отличается от интерфейса и что такое интерфейс?
@Ivan-Shyriaiev
@Ivan-Shyriaiev 4 жыл бұрын
Круть! Сделал пару штук #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 8 ай бұрын
Нихрена тебя понесло)
@user-up8cn6ri9k
@user-up8cn6ri9k Жыл бұрын
Спасибо брат
@sergbo3114
@sergbo3114 4 жыл бұрын
Вот недавно в процессе написания одного из классов зачудил. При отладке выяснил что при вызове виртуальной функции вызывается не функция в потомке, что как бы было должно быть при переопределении в дочернем классе, а вызывалась функция в базовом. И когда я убрал пустую реализацию из базового класса, то Runtime начал выдавать ошибку "abort()". Оказалось, по невнимательности я вызывал эту функцию из конструктора)) Получалось что класс еще был не сконструирован. Т.е. как раз получилось тот случай "что будет если инстанцировать абстрактный класс", ну в данном случае просто виртуальную функцию, но я думаю разница не большая. Получится просто рантайм еррор.
@Mark-wn4op
@Mark-wn4op 3 жыл бұрын
Скорость x2 и это просто лучшие видео
@kaisaryerdenbekov1588
@kaisaryerdenbekov1588 6 жыл бұрын
Кто-то влепил чисто абстрактный дизлайк.
@user-kb6qd8rg4g
@user-kb6qd8rg4g 4 жыл бұрын
спасибо
@ruslandad365
@ruslandad365 8 ай бұрын
Ляяя Теперь я начинаю понимать как работает Анрил
@gagikarakelyan6014
@gagikarakelyan6014 4 жыл бұрын
лучший
@ivanliaz
@ivanliaz 3 ай бұрын
Ну вот и геймдев пошёл))
@Nikitunr2013
@Nikitunr2013 2 жыл бұрын
В разы понятнее объясняешь, чем преподы большого универа
@user-ol9es1ch9x
@user-ol9es1ch9x Жыл бұрын
привет из 2023. Спасибо большое за уроки!
@t.on.y
@t.on.y 6 жыл бұрын
а ты расскажешь про win32 api?
@exploserester6041
@exploserester6041 2 жыл бұрын
Это для интерфейса? Если да, лучше используй Qt)
@OXEED12
@OXEED12 Ай бұрын
👍
@arismendi7101
@arismendi7101 6 жыл бұрын
Здраствуйте, можете сделать видео о рандомной генерации лабиринта с помощью рекурсивной функции?
@flepjack
@flepjack 3 жыл бұрын
Понято
@ekaterina1991
@ekaterina1991 6 жыл бұрын
Спасибо огромное, Сергей. Подскажите, пожалуйста, а как лучше в main реализовывать смену оружия? С помощью просто switch или есть более грамотная реализация?
@TheWladberlin
@TheWladberlin 4 жыл бұрын
Массив указателей, думаю
@user-ld3gf1tl1f
@user-ld3gf1tl1f 2 ай бұрын
бро даже в 2024 году твои уроки имбире
@annademidenko6356
@annademidenko6356 5 жыл бұрын
@shestak.E
@shestak.E 11 ай бұрын
Чисто теоретически можно такой вид программы реализовать с помощью функции с вложенным switch
@sleepyNovember_project
@sleepyNovember_project 5 ай бұрын
А с if else так вообще всё возможно xd
@WormsWolf1
@WormsWolf1 6 жыл бұрын
Немного не понял как будут деструкторы вызываться. У класса Weapon будет вызван деструктор или нет?
@flatmapper
@flatmapper 6 жыл бұрын
Нам в универе говорят, что существует 2 вида полиморфизма : времени компиляции и времени выполнения. Какой в данном уроке показываете вы?
@alexeytrofimov2232
@alexeytrofimov2232 3 жыл бұрын
✊🏻
@user-yx5wd5yy6h
@user-yx5wd5yy6h 3 жыл бұрын
вжууух - и мы переопределили виртуальную функцию
@KocTu4eK
@KocTu4eK 2 жыл бұрын
в прошлом уроке сильно не хватает пэинта (имхо), пришлось самому додумывать «кто такой этот ваш полеморфизм» на ходу урока, что очень отвлекало
@user-je5yr6ol6c
@user-je5yr6ol6c 6 жыл бұрын
Будут ли в будущем уроки, с поддержкой библиотеки SDL, либо других графических биб. ? И вообще, будем ли делать начиная с мини-игр, до более менее качественных 3D ?✊
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
Игры будут в отдалённом будущем на Unity.
@user-je5yr6ol6c
@user-je5yr6ol6c 6 жыл бұрын
Еще вопрос, разработка нейро-сетей на ЯП - C++ , будет ? Ведь, на нем тоже можно их разрабатывать, чтобы уже более-менее понимать структуру и их алгоритм.
@Viamsupervadetvadens
@Viamsupervadetvadens 6 жыл бұрын
up
@dimaan29
@dimaan29 4 жыл бұрын
Тема с оружием достаточно наглядна до тех пор, пока не появляются указатели (геморр). По вашим урокам учу С#, то есть все ваши уроки на С++ перевожу в С#, только вот беда, указатели никак не хотят работать в этом майкрософтовском языке, даже через режим unsafe. Поэтому никак не могу заставить класс Player работать со всеми видами оружия на C#
@user-zg9du7nu9q
@user-zg9du7nu9q 7 ай бұрын
напоминает создание конфига вооружения в ARMA 2
@mariasparrow5965
@mariasparrow5965 4 жыл бұрын
а если у меня есть класс геометрические фигуры и дано там, к примеру, круг, треугольник, сферу, цилиндр и конус, то чтобы это написать, мне нужно будет еще создать класс "плоскостные" и "пространственные"? ну так как ружье в вашем случае?
@user-sx4se9sd5c
@user-sx4se9sd5c 4 жыл бұрын
Сергей, а вы с Unreal Engine знакомы?
@alexandrsargsyan2202
@alexandrsargsyan2202 2 жыл бұрын
like
@nokompromis2297
@nokompromis2297 4 жыл бұрын
Knife.Shoot()...Нож же и шпионский бывает...
@tolegator2623
@tolegator2623 2 жыл бұрын
А можно в абстрактном родительском классе объявить статическое поле? Оно будет доступно всем потомкам?
@stenzoautomatic
@stenzoautomatic 6 ай бұрын
Красавчик, Серёга ты как там? Жив, здоров? Отзовись ( если что то он с Украины, и говорил что из-за войны пока не сможет поддерживать канал). Или может кто в курсе как он? Жалею что у меня не было такого препода!!!
@GottyMintly
@GottyMintly 3 жыл бұрын
Разработчик: потеет несколько дней, работая над кодом для шутера. Пистолет: стреляет Пистолет-пулемет: стреляет Гранатомёт: стрелеят Нож: доброе утро))0)
@user-pashaspr
@user-pashaspr 3 жыл бұрын
Прикольно,если туда пули как то пристроить)
@rachelraichi9494
@rachelraichi9494 Жыл бұрын
14:07 я сначала подумала, что напишет stab😅
@sleepyNovember_project
@sleepyNovember_project 5 ай бұрын
Ну получается стреляем ножами, тоже вполне себе неплохо
@user-ni9tf5yr6m
@user-ni9tf5yr6m 4 жыл бұрын
Уууу !Террорист ! Взрывать людей учишь (Like❤)
@Max-hc8we
@Max-hc8we 5 жыл бұрын
Можете объяснить в чём смысл абстрактного класса? Ведь с тем же успехом я могу написать: class Weapon { public: void virtual Shoot( ){ } }; Это будет виртуальный метод без реализации. Согласен, будет возможность создать объект данного класса, но тогда, опять же, можно не писать никакой реализации
@TheWladberlin
@TheWladberlin 4 жыл бұрын
Я думаю просто для удобства. Смысл объединить под одним классом какую-то область - в данном случае это "оружие". И далее в классе Player ты обращаешься только к этому классу.
@serzhant7169
@serzhant7169 4 жыл бұрын
В том то и дело что нам нужен класс от которого нельзя создавать объекты. Это тебе сейчас хорошо, что у тебя метод возвращает void и ты просто написал { }, а если метод будет не void? Будешь писать return что-то? костыль получается
@mulahivan
@mulahivan 3 жыл бұрын
Ну, не сложно
@Vov4ik048
@Vov4ik048 3 жыл бұрын
почему передается указатель, а не использовать ссылку?
@Igorkornilovspb
@Igorkornilovspb 3 жыл бұрын
С бадабумом так и не задалось )
Whyyyy? 😭 #shorts by Leisi Crazy
00:16
Leisi Crazy
Рет қаралды 20 МЛН
100❤️
00:20
Nonomen ノノメン
Рет қаралды 75 МЛН
Они убрались очень быстро!
00:40
Аришнев
Рет қаралды 3,3 МЛН
C# - Абстрактный класс vs Интерфейс
3:51
Зачем нужны указатели в C++?
8:14
Принципы ООП. 3. Полиморфизм
9:04
Sergey Nemchinskiy
Рет қаралды 138 М.
Whyyyy? 😭 #shorts by Leisi Crazy
00:16
Leisi Crazy
Рет қаралды 20 МЛН