Перейти к содержимому

НАСЛЕДОВАНИЕ в 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 #программирование #кодирование #разработка ПО #образование