НАСЛЕДОВАНИЕ в C++ | большая часть того, что вам нужно знать для ООП и не только 🚀
Code for yourself
0:00 / 0:00
НАСЛЕДОВАНИЕ в C++ | большая часть того, что вам нужно знать для ООП и не только 🚀
2 362 просмотра · 2 г. назад
Code for yourself
6,82 тыс. подписчиков
2 362 просмотра · 2 г. назад
Помогите мне продолжать делать эти видео!
Этот проект работает только благодаря вашей поддержке! Вы можете продемонстрировать это одним из следующих способов:
📚 Начать БЕСПЛАТНЫЙ пробный период Audible: https://www.audibletrial.com/CodeForY...
🛍️ Купить оборудование, которое я использую для создания этого видео: https://github.com/cpp-for-yourself/s...
💶 Стать спонсором напрямую на GitHub: https://github.com/sponsors/niosus
📺 Смотреть мои видео до конца и оставлять комментарии
⁉️ Найти свой способ поддержать эту работу можно здесь: https://github.com/cpp-for-yourself/s...
В этом видео мы рассмотрим большинство моментов, с которыми можно столкнуться при работе с наследованием в современном C++. Мы рассмотрим широкий список тем, начиная с того, почему нам важно наследование (осторожно, спойлер: для обеспечения динамического полиморфизма), и углубляясь в то, как оно сочетается с наследованием реализации (не очень удачно), что такое срез объекта и что нужно учитывать, если мы хотим использовать наследование и принять семантику ссылок.
📚 Ссылка на скрипт к этому видео на GitHub: https://github.com/cpp-for-yourself/s...
🔗 Ссылки
⏺ Избегайте защищённых данных: https://isocpp.github.io/CppCoreGuide...
⏺ CRTP: https://en.wikipedia.org/wiki/Curious...
⏺ Трейт is_integral: https://en.cppreference.com/w/cpp/typ...
⏺ Трейт integral_constant: https://en.cppreference.com/w/cpp/typ...
⏺ Таблица виртуальных методов: https://en.wikipedia.org/wiki/Virtual...
⏺ Виртуальный деструктор: https://en.cppreference.com/w/cpp/lan...
⏺ Нарезка объектов: https://www.learncpp.com/cpp-tutorial...
⏺ Полиморфные объекты: https://en.cppreference.com/w/cpp/lan...
⏺ Принцип подстановки Лисков: https://en.wikipedia.org/wiki/Liskov_...
⏺ Различие между наследованием реализации и интерфейса: https://isocpp.github.io/CppCoreGuide...
⏺ Google Style о наследовании: https://google.github.io/styleguide/c...
⏺ Наследование реализаций — зло: http://whats-in-a-game.com/implementa...
⏺ Используйте множественное наследование для интерфейсов: https://isocpp.github.io/CppCoreGuide...
Содержание
00:00 Введение
00:40 Принцип инверсии зависимостей Мотивация
03:06 Принцип инверсии зависимостей
05:29 Можно ли использовать шаблоны для инверсии зависимостей?
05:55 Основы наследования реализаций
07:30 Управление доступом при наследовании
10:23 Восходящее приведение типов
11:27 Когда использовать наследование реализаций
13:20 Динамический полиморфизм с использованием виртуальных типов
14:20 Таблица виртуальных методов (vtable)
15:39 Недостатки использования виртуальных типов
16:30 Виртуальный деструктор и зачем он нужен
17:54 Правило «всё или ничего» и ссылочная симантика
18:34 Срез объектов
19:20 Понижающее приведение типов с использованием dynamic_cast
21:05 Чисто виртуальные функции, абстрактные классы и интерфейсы
22:03 Ключевое слово final
22:59 Множественное наследование и когда его использовать
23:34 Последний пример хорошего стиля и резюме
Благодарности
⏺ Видео Тимы Мирошниченко: https://www.pexels.com/video/two-youn...
⏺ Видео Мати Манго: https://www.pexels.com/video/a-man-ha...
⏺ Видео freepik: https://www.freepik.com/free-video/st...
⏺ Тикающий звук: https://freesound.org/people/bySeb/so...
#cpp #cplusplus #программирование #кодирование #разработка ПО #образование