Объектно-ориентированный C++
Классы, объекты, наследование, полиморфизм и столпы ООП в C++.
Классы и объекты
Классы, структуры и инкапсуляция
Поймите разницу между структурой и классом, спецификаторами доступа, инкапсуляцией, функциями членов const, статичными членами и современной агрегированной инициализацией.
Конструкторы, разрушители и правило 0/3/5
Овладейте полным жизненным циклом объектов C++ — от строительства до разрушения — и научитесь писать (или не писать) специальные членские функции.
Оригинальное название: Deep vs. Shallow
Узнайте разницу между неглубокими и глубокими копиями, как реализовать правильные операции копирования для классов, владеющих ресурсами, и идиома копирования и обмена.
Наследование и полиморфизм
Наследование и Is-A отношения
Изучите публичное наследование, цепь конструкторов, проблему нарезки, множественное наследование и проблему алмазов — и когда наследование уместно.
Виртуальные функции, столы и полиморфизм
Погрузитесь в полиморфизм среды выполнения: как работает виртуальная диспетчеризация под капотом, когда использовать оверрайд и конечные, абстрактные классы, и RTTI.
Оператор перегрузки
Узнайте, как правильно перегружать операторов — участник против нечлена, канонические формы, операторы потоков, оператор космического корабля C++20 и распространенные подводные камни.
Дизайн ООП
Статические участники, Singletons & PIMPL
Исследуйте статические элементы, шаблон Meyers Singleton, шаблон Factory и идиому PIMPL для стабильности ABI и изоляции во времени компиляции.
Композиция, интерфейсы и дизайн
Мастер-композиция над наследованием, чистые абстрактные интерфейсы, принципы проектирования (ISP, DIP), std::вариант как альтернатива наследованию и стирание типов.