Из-за периодической блокировки нашего сайта РКН сервисами, просим воспользоваться резервным адресом:
Загрузить через dTub.ru Загрузить через ClipSaver.ruУ нас вы можете посмотреть бесплатно 12. Наследование и полиморфизм | ООП 2025 или скачать в максимальном доступном качестве, которое было загружено на ютуб. Для скачивания выберите вариант из формы ниже:
Роботам не доступно скачивание файлов. Если вы считаете что это ошибочное сообщение - попробуйте зайти на сайт через браузер google chrome или mozilla firefox. Если сообщение не исчезает - напишите о проблеме в обратную связь. Спасибо.
Если кнопки скачивания не
загрузились
НАЖМИТЕ ЗДЕСЬ или обновите страницу
Если возникают проблемы со скачиванием, пожалуйста напишите в поддержку по адресу внизу
страницы.
Спасибо за использование сервиса savevideohd.ru
Лекция посвящена наследованию в C++ — одному из ключевых принципов объектно-ориентированного программирования. Разбираются основы иерархии классов, правила публичного наследования, порядок вызова конструкторов, использование виртуальных методов и деструкторов. Особое внимание уделено полиморфизму, приведению типов и практическим рекомендациям по проектированию иерархий классов. Примеры кода и задачи можно найти в моём github-аккаунте: https://github.com/alexey-malov/oop Чтобы оставаться на связи в условиях блокировки Youtube в России подписывайтесь на мой Telegram-канал https://t.me/vivid_coding *1. Наследование: суть и иерархия* Наследование позволяет создавать новые классы на основе существующих, повторно используя код. Классы-наследники расширяют или переопределяют поведение базовых. Иерархия оформляется как дерево: пример — `Shape → Circle`. *2. Публичное наследование* При публичном наследовании: `public` и `protected` сохраняют модификаторы доступа, `private` остаётся недоступным. Наследник — частный случай базового класса. *3. Конструкторы и инициализация* Сначала вызывается конструктор базового класса. Для передачи параметров родительскому конструктору используется список инициализации. *4. Расширение и `using`* Наследники могут добавлять методы и поля, а также наследовать конструкторы с помощью `using`. *5. Полиморфизм и приведение типов* Приведение вверх позволяет использовать наследника как родителя. Полиморфизм даёт возможность вызывать разные реализации через единый интерфейс. *6. Виртуальные методы* Объявляются с `virtual`, переопределяются с `override`. Механизм основан на таблице виртуальных функций (vtable). Правило: если метод виртуальный — он остаётся таким во всех наследниках. *7. Деструкторы* Базовый класс должен иметь **виртуальный деструктор**, если предполагается полиморфное удаление. Иначе — риск утечек и неопределённого поведения. *8. Модификатор `protected`* Доступен классу и его наследникам. Лучше использовать `protected` методы, чем напрямую `protected` поля. *9. Защищённые конструкторы* Используются для ограничения создания экземпляров базового класса. *10. Рекомендации* Используйте `virtual` и `override` осознанно. Не делайте всё виртуальным по умолчанию. Инкапсуляцию лучше сохранять через `private` поля и `protected` интерфейс. Тайм-коды: 0:00 Отношение наследования 10:05 Передача параметров конструктору родителя 16:04 Приведение типа в вверх по иерархии классов 21:43 Виртуальные методы, полиморфизм 33:46 Защищённые данные и методы класса 38:56 Применение защищённого конструктора 40:09 Работа деструкторов при наследовании 58:13 Финальные классы и методы В заставке использована композиция "Папа может в Си" музыкального коллектива "Научно-технический рэп" (https://vk.com/nii_rap) Исходный код шейдера из финальной заставки: https://www.shadertoy.com/view/Mcjfzc