Абстрактный класс с++ пример. Чисто виртуальная функция. 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
*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
@user-je5yr6ol6c
6 жыл бұрын
Будут ли в будущем уроки, с поддержкой библиотеки SDL, либо других графических биб. ? И вообще, будем ли делать начиная с мини-игр, до более менее качественных 3D ?✊
@deniskozak5997
6 жыл бұрын
лучше чем-то более серьезным заниматься, нежели игрушками
@user-je5yr6ol6c
6 жыл бұрын
Еще вопрос, разработка нейро-сетей на ЯП - C++ , будет ? Ведь, на нем тоже можно их разрабатывать, чтобы уже более-менее понимать структуру и их алгоритм.
@bobrovskij100
4 жыл бұрын
Снимите, пожалуйста, видео о том, как разделять проект на файлы и как это всё подключать между собой, как подключать сторонние библиотеки, создавать свои, или просто как подключить готовый класс к проекту. Как пользоваться hex-редакторами и cmake для С++.
@elemantro5257
4 жыл бұрын
мне кажется или это паттерн стратегия?
От кофемолки до ножа всего за 31 VJUHHH! :)
Вжух! И я вспомнил как работают абстрактные классы в С++.
@SimpleCodeIT
6 жыл бұрын
Всё правильно понял! =)
Годнота. Это самые лучшие уроки вообще которые я когда-либо встречал. Правда смотрю на скорости 1.5 х)
@iryandriver
5 жыл бұрын
Чайники на 0.25 смотрят))
@developer-miracle
5 жыл бұрын
а я с обычной скоростью, но только ставлю на паузу, чтоб повторить все действия в IDE ;)
@user-lz1yb6qk3f
3 жыл бұрын
×2
@romasenkevich9907
3 жыл бұрын
Райан Купер можно смотреть в х4, но это нужно будет в код ютуба лезть в гугл хроме
@Kokurorokuko
2 жыл бұрын
@@developer-miracle как по мне, лучше сначала посмотреть, а потом писать код самому. Заодно и проверяешь, как запомнил.
Тема с оружием крутяк! Спасибо.
. class Player | class Weapon (virtual) | | | class Gun class Bazooka class Knife | class SubMashineGun Получается так: - класс "Игрок" содержит функцию "Стрелять", - соответственно возникает вопрос "чем стрелять?" и в функции производится обращение к абстрактному классу "Оружие" . - у класса три наследника пистолет, базука, нож, а у пистолета наследник пулемет. Через наследование передаются все свойства класса "оружие". - В майн создается объект "игрок", вызывается функция "стрелять" в ней указывается на оружие вообще, а потом уточняется то, чем именно действовать. Т.о. получается, что виртуальный класс просто служит для предварительного указания, того, что с оружием будет производится какое то действие в классах наследниках, а само действие зависит от типа выбранного оружия. Ок. надеюсь понял правильно. Спасибо.
@user-iq5of8vu7e
4 жыл бұрын
стрелять могут и мобы
@shibu5180
Жыл бұрын
@@user-iq5of8vu7e а у нас нету мобов
Спасибо. Вы лучший педагог с++:)))
Это конкуренты с их барахлом похоже ставят дизлайки т. к. до этого уровня изложения не тянут.
Мужик, ты просто лучший, только благодоря тебе я захотел стать программистом (и у меня это получается) и меня не выперли с универа. Самые топовые уроки по программированию.
@nazarmarhotskiy7372
5 жыл бұрын
+
@Matissed
3 жыл бұрын
как успехи?
@mrgold8267
Жыл бұрын
Ну вот уже 3 года прошло, стал прогером? где работаешь, кем работаешь ?
Дружище, у тебя есть талант объяснять людям непонятные вещи на понятных примерах. Всё очень доходчиво. Надеюсь ты вернешься на KZread и будешь дальше использовать свой талант в просветительских целях. Желаю удачи.
Сними пожалуйста видео о том, как разделять проект на файлы и как это всё подключать между собой, как подключать сторонние библиотеки, создавать свои, или просто как подключить готовый класс к проекту. Я пытался в это разобраться, но как-то сложно.
@MrMes
4 жыл бұрын
аххахахаха, то есть ты не можешь в проводнике в IDE добавить файлы и в файле, где нужен функционал написать инклюды?
@rednil8242
4 жыл бұрын
@@MrMes все думают, что это легко, пока пару книг по теме не почитают.
@Matissed
3 жыл бұрын
@@rednil8242 забей, это ебаные токсики, думающие, что они дохуя знающие программисты
@_Yes_.
Жыл бұрын
@@MrMes чел
@princessmary5556
11 ай бұрын
@@rednil8242 И прочитав пару книг, понимают, что это ещё проще, чем казалось вначале.
Лучшие уроки по программированию во вселенной!
Вы настолько хорошо объясняете, что я на прошлом уроке уже что то похожее написал, правда вместо виртуальной сделал просто пустую функцию. Все и так работает.
Контент просто супер. Твои уроки не раз спасали меня когда не знал как лабораторку сделать. Спасибо огромное.
Спасибо за урок.
Ті по поводу примеров правильно говориш, твоя история про игру змейка супер. Сделай раздел практикум. Давай в разделе по порядку сделаем с начала консольную, потом виндозную, потом сетевую и т.д. как ті рассказывал. Донат должен быть хорошим.
Очередной раз спасибо за интересный урок!
НЕ перестаю радоваться! как суперски все обьясняется! Спасибо снова!
ООП - это красота!🤩
Спасибо за отличный урок! После просмотра мысли и правда собираются в одно единое знание, которое не стыдно попробовать на практике.
Кайф, спасибо за отличное объяснение
Эти уроки просто спасают меня перед экзаменом!!! Спасибо большое
Спасибо за видео !
прекрасное изложение. лайкаю все подряд. желаю Вашем каналу успеха
@SimpleCodeIT
6 жыл бұрын
Благодарю за поддержку!
супер, все очень понятно. Спасибо за классную работу.
Перед курсачем по ООП - самое то!
Благодарю за бесценную работу!
Огромное спасибо за уроки. Очень помогают
Я был неправ, ЭТО самый интересный урок из плейлиста, а не предыдущий))
#абстрактныйкласс #чистовиртуальнаяфункция #ООП #SimpleCode #урокипрограммирования
Очень интересный урок, большое спасибо!!!
Спасибо за урок!
Огромное спасибо, Сергей, очень интересно и доходчиво!
Еще один хороший урок ,мое почтение.
Спасибо большое за ваши старания!
*ТОП* Уроки ! Спасибо большое!
Спасибо за уроки
Вы великолепны, спасибо!
Это просто идеально, тем-более во время дистанционки.
Чувак, просто супер видосы , в универе очень помогает
лучший, спасибо большое, очень помог!!!)))
Спасибо! Просто и ясно.
Огромнейшее спасибо
Спасибо огромное!
Круть! Сделал пару штук #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
3 жыл бұрын
Хах, прикольно чел. Интересно было почитать историю)
@ruslandad365
7 ай бұрын
Нихрена тебя понесло)
Четко получилось!
Дуже хороший урок , і взагалі всі уроки мають прекрасне розяснення . Спочатку трохи здається все запутаним бо багато англійськомовних слів і невидно всього коду на екрані , але якщо переглянути пару разів то вимальовується більш зрозуміла логіка того що автор відео хоче передати . Перед уроком бажано доповідати які знання вже потрібно мати щоб зрозуміти дане відео Дякую за уроки , взагалі прекрасна подача інформації , всім раджу переглядати дані відео декілька разів щоб краще усвоїти конкретну тему уроку
@llllNEOllllchannel
6 жыл бұрын
??? зачем этот c++, лучше буду украинский учить
@romsik2949
4 жыл бұрын
@@llllNEOllllchannel Выучил?
@llllNEOllllchannel
4 жыл бұрын
@@romsik2949 дi
круто! потренировался со своими классами+ попробовал передать в функцию массив адресов по ссылке используя std::vector.
Спасибо
Спасибо за крутое объяснение)
спасибо за урок, будет ли видео урок про то чем абстрактный класс отличается от интерфейса и что такое интерфейс?
Круто!Дуже вдячний!
Спасибо за рекомендацию отладчика, без него было сложнее годные советы)
Спасибо за урок
Вы легенда!
Кто-то влепил чисто абстрактный дизлайк.
Скорость x2 и это просто лучшие видео
Вот недавно в процессе написания одного из классов зачудил. При отладке выяснил что при вызове виртуальной функции вызывается не функция в потомке, что как бы было должно быть при переопределении в дочернем классе, а вызывалась функция в базовом. И когда я убрал пустую реализацию из базового класса, то Runtime начал выдавать ошибку "abort()". Оказалось, по невнимательности я вызывал эту функцию из конструктора)) Получалось что класс еще был не сконструирован. Т.е. как раз получилось тот случай "что будет если инстанцировать абстрактный класс", ну в данном случае просто виртуальную функцию, но я думаю разница не большая. Получится просто рантайм еррор.
Ляяя Теперь я начинаю понимать как работает Анрил
Спасибо!
Спасибо Все понятно
а ты расскажешь про win32 api?
@exploserester6041
2 жыл бұрын
Это для интерфейса? Если да, лучше используй Qt)
Спасибо!!!
Ну вот и геймдев пошёл))
Лучший ❤
Спасибо брат
Чисто теоретически можно такой вид программы реализовать с помощью функции с вложенным switch
@sleepyNovember_project
4 ай бұрын
А с if else так вообще всё возможно xd
В разы понятнее объясняешь, чем преподы большого универа
бро даже в 2024 году твои уроки имбире
привет из 2023. Спасибо большое за уроки!
Здраствуйте, можете сделать видео о рандомной генерации лабиринта с помощью рекурсивной функции?
спасибо
лучший
Спасибо огромное, Сергей. Подскажите, пожалуйста, а как лучше в main реализовывать смену оружия? С помощью просто switch или есть более грамотная реализация?
@TheWladberlin
4 жыл бұрын
Массив указателей, думаю
Немного не понял как будут деструкторы вызываться. У класса Weapon будет вызван деструктор или нет?
напоминает создание конфига вооружения в ARMA 2
Тема с оружием достаточно наглядна до тех пор, пока не появляются указатели (геморр). По вашим урокам учу С#, то есть все ваши уроки на С++ перевожу в С#, только вот беда, указатели никак не хотят работать в этом майкрософтовском языке, даже через режим unsafe. Поэтому никак не могу заставить класс Player работать со всеми видами оружия на C#
вжууух - и мы переопределили виртуальную функцию
в прошлом уроке сильно не хватает пэинта (имхо), пришлось самому додумывать «кто такой этот ваш полеморфизм» на ходу урока, что очень отвлекало
Понято
Сергей, а вы с Unreal Engine знакомы?
Нам в универе говорят, что существует 2 вида полиморфизма : времени компиляции и времени выполнения. Какой в данном уроке показываете вы?
Будут ли в будущем уроки, с поддержкой библиотеки SDL, либо других графических биб. ? И вообще, будем ли делать начиная с мини-игр, до более менее качественных 3D ?✊
@SimpleCodeIT
6 жыл бұрын
Игры будут в отдалённом будущем на Unity.
@user-je5yr6ol6c
6 жыл бұрын
Еще вопрос, разработка нейро-сетей на ЯП - C++ , будет ? Ведь, на нем тоже можно их разрабатывать, чтобы уже более-менее понимать структуру и их алгоритм.
👍
✋
а если у меня есть класс геометрические фигуры и дано там, к примеру, круг, треугольник, сферу, цилиндр и конус, то чтобы это написать, мне нужно будет еще создать класс "плоскостные" и "пространственные"? ну так как ружье в вашем случае?
Knife.Shoot()...Нож же и шпионский бывает...
Разработчик: потеет несколько дней, работая над кодом для шутера. Пистолет: стреляет Пистолет-пулемет: стреляет Гранатомёт: стрелеят Нож: доброе утро))0)
А можно в абстрактном родительском классе объявить статическое поле? Оно будет доступно всем потомкам?
up
Прикольно,если туда пули как то пристроить)
14:07 я сначала подумала, что напишет stab😅
@sleepyNovember_project
4 ай бұрын
Ну получается стреляем ножами, тоже вполне себе неплохо
Красавчик, Серёга ты как там? Жив, здоров? Отзовись ( если что то он с Украины, и говорил что из-за войны пока не сможет поддерживать канал). Или может кто в курсе как он? Жалею что у меня не было такого препода!!!
Ну, не сложно
✊🏻
почему передается указатель, а не использовать ссылку?
Уууу !Террорист ! Взрывать людей учишь (Like❤)
Можете объяснить в чём смысл абстрактного класса? Ведь с тем же успехом я могу написать: class Weapon { public: void virtual Shoot( ){ } }; Это будет виртуальный метод без реализации. Согласен, будет возможность создать объект данного класса, но тогда, опять же, можно не писать никакой реализации
@TheWladberlin
4 жыл бұрын
Я думаю просто для удобства. Смысл объединить под одним классом какую-то область - в данном случае это "оружие". И далее в классе Player ты обращаешься только к этому классу.
@serzhant7169
4 жыл бұрын
В том то и дело что нам нужен класс от которого нельзя создавать объекты. Это тебе сейчас хорошо, что у тебя метод возвращает void и ты просто написал { }, а если метод будет не void? Будешь писать return что-то? костыль получается
like
Как можно быстро закомментировать выделенный код?
@user-rr5bz4zs5u
4 жыл бұрын
выделить участок кода и нажать сначала ctrl+k потом ctrl+c
@AltaiHerbalist
Жыл бұрын
Ctrl + Shift + /