Перейти к содержимому
Модуль 2

Объектно-ориентированный C++

Классы, объекты, наследование, полиморфизм и столпы ООП в C++.

Классы и объекты

  1. Классы, структуры и инкапсуляция

    Поймите разницу между структурой и классом, спецификаторами доступа, инкапсуляцией, функциями членов const, статичными членами и современной агрегированной инициализацией.

  2. Конструкторы, разрушители и правило 0/3/5

    Овладейте полным жизненным циклом объектов C++ — от строительства до разрушения — и научитесь писать (или не писать) специальные членские функции.

  3. Оригинальное название: Deep vs. Shallow

    Узнайте разницу между неглубокими и глубокими копиями, как реализовать правильные операции копирования для классов, владеющих ресурсами, и идиома копирования и обмена.

Наследование и полиморфизм

  1. Наследование и Is-A отношения

    Изучите публичное наследование, цепь конструкторов, проблему нарезки, множественное наследование и проблему алмазов — и когда наследование уместно.

  2. Виртуальные функции, столы и полиморфизм

    Погрузитесь в полиморфизм среды выполнения: как работает виртуальная диспетчеризация под капотом, когда использовать оверрайд и конечные, абстрактные классы, и RTTI.

  3. Оператор перегрузки

    Узнайте, как правильно перегружать операторов — участник против нечлена, канонические формы, операторы потоков, оператор космического корабля C++20 и распространенные подводные камни.

Дизайн ООП

  1. Статические участники, Singletons & PIMPL

    Исследуйте статические элементы, шаблон Meyers Singleton, шаблон Factory и идиому PIMPL для стабильности ABI и изоляции во времени компиляции.

  2. Композиция, интерфейсы и дизайн

    Мастер-композиция над наследованием, чистые абстрактные интерфейсы, принципы проектирования (ISP, DIP), std::вариант как альтернатива наследованию и стирание типов.