Абстрактный класс с++ пример. Чисто виртуальная функция. virtual. override. Полиморфизм ООП C++
HTML-код
- Опубликовано: 1 ноя 2017
- Понравилось видео или оказалось полезным? Подпишись!
Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут! =)
www.donationalerts.ru/r/simple...
или тут
/ simplecode
Абстрактный класс с++ пример. Чисто виртуальная функция. virtual. override. Полиморфизм ООП C++ Для начинающих. Урок #104
Исходный код урока:
topic-142292681_35943080
Виртуальные методы класса c++. Ключевое слово virtual. Ключевое слово override. ООП. C++ #103
goo.gl/cuW4cY
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit
*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
Будут ли в будущем уроки, с поддержкой библиотеки SDL, либо других графических биб. ? И вообще, будем ли делать начиная с мини-игр, до более менее качественных 3D ?✊
лучше чем-то более серьезным заниматься, нежели игрушками
Еще вопрос, разработка нейро-сетей на ЯП - C++ , будет ? Ведь, на нем тоже можно их разрабатывать, чтобы уже более-менее понимать структуру и их алгоритм.
Снимите, пожалуйста, видео о том, как разделять проект на файлы и как это всё подключать между собой, как подключать сторонние библиотеки, создавать свои, или просто как подключить готовый класс к проекту. Как пользоваться hex-редакторами и cmake для С++.
мне кажется или это паттерн стратегия?
От кофемолки до ножа всего за 31 VJUHHH! :)
Вжух! И я вспомнил как работают абстрактные классы в С++.
Всё правильно понял! =)
Годнота. Это самые лучшие уроки вообще которые я когда-либо встречал. Правда смотрю на скорости 1.5 х)
Чайники на 0.25 смотрят))
а я с обычной скоростью, но только ставлю на паузу, чтоб повторить все действия в IDE ;)
×2
Райан Купер можно смотреть в х4, но это нужно будет в код ютуба лезть в гугл хроме
@@developer-miracle как по мне, лучше сначала посмотреть, а потом писать код самому. Заодно и проверяешь, как запомнил.
Тема с оружием крутяк! Спасибо.
#абстрактныйкласс #чистовиртуальнаяфункция #ООП #SimpleCode #урокипрограммирования
Спасибо. Вы лучший педагог с++:)))
Дружище, у тебя есть талант объяснять людям непонятные вещи на понятных примерах. Всё очень доходчиво. Надеюсь ты вернешься на RUclips и будешь дальше использовать свой талант в просветительских целях. Желаю удачи.
Это конкуренты с их барахлом похоже ставят дизлайки т. к. до этого уровня изложения не тянут.
Сними пожалуйста видео о том, как разделять проект на файлы и как это всё подключать между собой, как подключать сторонние библиотеки, создавать свои, или просто как подключить готовый класс к проекту. Я пытался в это разобраться, но как-то сложно.
аххахахаха, то есть ты не можешь в проводнике в IDE добавить файлы и в файле, где нужен функционал написать инклюды?
@@MrMes все думают, что это легко, пока пару книг по теме не почитают.
@@rednil8242 забей, это ебаные токсики, думающие, что они дохуя знающие программисты
@@MrMes чел
@@rednil8242 И прочитав пару книг, понимают, что это ещё проще, чем казалось вначале.
. class Player
|
class Weapon (virtual)
| | |
class Gun class Bazooka class Knife
|
class SubMashineGun
Получается так:
- класс "Игрок" содержит функцию "Стрелять",
- соответственно возникает вопрос "чем стрелять?" и в функции производится обращение к абстрактному классу "Оружие" .
- у класса три наследника пистолет, базука, нож, а у пистолета наследник пулемет. Через наследование передаются все свойства класса "оружие".
- В майн создается объект "игрок", вызывается функция "стрелять" в ней указывается на оружие вообще, а потом уточняется то, чем именно действовать.
Т.о. получается, что виртуальный класс просто служит для предварительного указания, того, что с оружием будет производится какое то действие в классах наследниках, а само действие зависит от типа выбранного оружия.
Ок. надеюсь понял правильно. Спасибо.
стрелять могут и мобы
@@user-iq5of8vu7e а у нас нету мобов
Лучшие уроки по программированию во вселенной!
Мужик, ты просто лучший, только благодоря тебе я захотел стать программистом (и у меня это получается) и меня не выперли с универа. Самые топовые уроки по программированию.
+
как успехи?
Ну вот уже 3 года прошло, стал прогером? где работаешь, кем работаешь ?
Вы настолько хорошо объясняете, что я на прошлом уроке уже что то похожее написал, правда вместо виртуальной сделал просто пустую функцию. Все и так работает.
ООП - это красота!🤩
Контент просто супер. Твои уроки не раз спасали меня когда не знал как лабораторку сделать. Спасибо огромное.
Ті по поводу примеров правильно говориш, твоя история про игру змейка супер. Сделай раздел практикум. Давай в разделе по порядку сделаем с начала консольную, потом виндозную, потом сетевую и т.д. как ті рассказывал. Донат должен быть хорошим.
НЕ перестаю радоваться! как суперски все обьясняется! Спасибо снова!
Эти уроки просто спасают меня перед экзаменом!!! Спасибо большое
Спасибо за урок.
Спасибо за отличный урок! После просмотра мысли и правда собираются в одно единое знание, которое не стыдно попробовать на практике.
Очередной раз спасибо за интересный урок!
Благодарю за бесценную работу!
Кайф, спасибо за отличное объяснение
супер, все очень понятно. Спасибо за классную работу.
Перед курсачем по ООП - самое то!
прекрасное изложение. лайкаю все подряд. желаю Вашем каналу успеха
Благодарю за поддержку!
Огромное спасибо за уроки. Очень помогают
Спасибо за видео !
Огромное спасибо, Сергей, очень интересно и доходчиво!
Кто-то влепил чисто абстрактный дизлайк.
Я был неправ, ЭТО самый интересный урок из плейлиста, а не предыдущий))
Очень интересный урок, большое спасибо!!!
Спасибо большое за ваши старания!
Спасибо за урок!
Еще один хороший урок ,мое почтение.
Спасибо за уроки
*ТОП* Уроки ! Спасибо большое!
Вы великолепны, спасибо!
Чувак, просто супер видосы , в универе очень помогает
Это просто идеально, тем-более во время дистанционки.
Спасибо! Просто и ясно.
Вы легенда!
лучший, спасибо большое, очень помог!!!)))
Огромнейшее спасибо
Спасибо
Спасибо огромное!
Лучший ❤
круто! потренировался со своими классами+ попробовал передать в функцию массив адресов по ссылке используя std::vector.
Спасибо за крутое объяснение)
Спасибо за рекомендацию отладчика, без него было сложнее
годные советы)
Спасибо за урок
Четко получилось!
Спасибо Все понятно
спасибо за урок, будет ли видео урок про то чем абстрактный класс отличается от интерфейса и что такое интерфейс?
Спасибо!
Круто!Дуже вдячний!
Дуже хороший урок , і взагалі всі уроки мають прекрасне розяснення . Спочатку трохи здається все запутаним бо багато англійськомовних слів і невидно всього коду на екрані , але якщо переглянути пару разів то вимальовується більш зрозуміла логіка того що автор відео хоче передати . Перед уроком бажано доповідати які знання вже потрібно мати щоб зрозуміти дане відео Дякую за уроки , взагалі прекрасна подача інформації , всім раджу переглядати дані відео декілька разів щоб краще усвоїти конкретну тему уроку
??? зачем этот c++, лучше буду украинский учить
@@llllNEOllllchannel Выучил?
@@romsik2949 дi
Спасибо!!!
Скорость x2 и это просто лучшие видео
Спасибо брат
Круть! Сделал пару штук
#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
Хах, прикольно чел. Интересно было почитать историю)
Нихрена тебя понесло)
Вот недавно в процессе написания одного из классов зачудил. При отладке выяснил что при вызове виртуальной функции вызывается не функция в потомке, что как бы было должно быть при переопределении в дочернем классе, а вызывалась функция в базовом. И когда я убрал пустую реализацию из базового класса, то Runtime начал выдавать ошибку "abort()". Оказалось, по невнимательности я вызывал эту функцию из конструктора)) Получалось что класс еще был не сконструирован. Т.е. как раз получилось тот случай "что будет если инстанцировать абстрактный класс", ну в данном случае просто виртуальную функцию, но я думаю разница не большая. Получится просто рантайм еррор.
Ляяя
Теперь я начинаю понимать как работает Анрил
спасибо
В разы понятнее объясняешь, чем преподы большого универа
а ты расскажешь про win32 api?
Это для интерфейса? Если да, лучше используй Qt)
лучший
Ну вот и геймдев пошёл))
Здраствуйте, можете сделать видео о рандомной генерации лабиринта с помощью рекурсивной функции?
привет из 2023. Спасибо большое за уроки!
Понято
👍
✋
бро даже в 2024 году твои уроки имбире
Спасибо огромное, Сергей. Подскажите, пожалуйста, а как лучше в main реализовывать смену оружия? С помощью просто switch или есть более грамотная реализация?
Массив указателей, думаю
Чисто теоретически можно такой вид программы реализовать с помощью функции с вложенным switch
А с if else так вообще всё возможно xd
Немного не понял как будут деструкторы вызываться. У класса Weapon будет вызван деструктор или нет?
Нам в универе говорят, что существует 2 вида полиморфизма : времени компиляции и времени выполнения. Какой в данном уроке показываете вы?
Сергей, а вы с Unreal Engine знакомы?
Будут ли в будущем уроки, с поддержкой библиотеки SDL, либо других графических биб. ? И вообще, будем ли делать начиная с мини-игр, до более менее качественных 3D ?✊
Игры будут в отдалённом будущем на Unity.
Еще вопрос, разработка нейро-сетей на ЯП - C++ , будет ? Ведь, на нем тоже можно их разрабатывать, чтобы уже более-менее понимать структуру и их алгоритм.
вжууух - и мы переопределили виртуальную функцию
Тема с оружием достаточно наглядна до тех пор, пока не появляются указатели (геморр). По вашим урокам учу С#, то есть все ваши уроки на С++ перевожу в С#, только вот беда, указатели никак не хотят работать в этом майкрософтовском языке, даже через режим unsafe. Поэтому никак не могу заставить класс Player работать со всеми видами оружия на C#
✊🏻
в прошлом уроке сильно не хватает пэинта (имхо), пришлось самому додумывать «кто такой этот ваш полеморфизм» на ходу урока, что очень отвлекало
up
а если у меня есть класс геометрические фигуры и дано там, к примеру, круг, треугольник, сферу, цилиндр и конус, то чтобы это написать, мне нужно будет еще создать класс "плоскостные" и "пространственные"? ну так как ружье в вашем случае?
Разработчик: потеет несколько дней, работая над кодом для шутера.
Пистолет: стреляет
Пистолет-пулемет: стреляет
Гранатомёт: стрелеят
Нож: доброе утро))0)
напоминает создание конфига вооружения в ARMA 2
А можно в абстрактном родительском классе объявить статическое поле? Оно будет доступно всем потомкам?
Knife.Shoot()...Нож же и шпионский бывает...
like
Прикольно,если туда пули как то пристроить)
Ну, не сложно
Можете объяснить в чём смысл абстрактного класса? Ведь с тем же успехом я могу написать:
class Weapon {
public:
void virtual Shoot( ){ }
};
Это будет виртуальный метод без реализации. Согласен, будет возможность создать объект данного класса, но тогда, опять же, можно не писать никакой реализации
Я думаю просто для удобства. Смысл объединить под одним классом какую-то область - в данном случае это "оружие". И далее в классе Player ты обращаешься только к этому классу.
В том то и дело что нам нужен класс от которого нельзя создавать объекты. Это тебе сейчас хорошо, что у тебя метод возвращает void и ты просто написал { }, а если метод будет не void? Будешь писать return что-то? костыль получается
Красавчик, Серёга ты как там? Жив, здоров? Отзовись ( если что то он с Украины, и говорил что из-за войны пока не сможет поддерживать канал). Или может кто в курсе как он? Жалею что у меня не было такого препода!!!
14:07 я сначала подумала, что напишет stab😅
Ну получается стреляем ножами, тоже вполне себе неплохо
Уууу !Террорист ! Взрывать людей учишь (Like❤)
С бадабумом так и не задалось )
почему передается указатель, а не использовать ссылку?