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