Полные примеры из лекции
https://github.com/zaychenko-sergei/oop-samples/tree/master/lec10
Выводы
В данной лекции
были показаны типичные ошибки начинающих
программистов при реализации отношения
композиции между объектами на основе
STL-контейнеров, а также выданы подробные
рекомендации по удачному стилю реализации
родительских классов. Рассматривались
возможные варианты улучшения инкапсуляции
при помощи контейнерных итераторов, а
также средства std::function.
Позднее было
введено понятие умных указателей, в
частности, std::unique_ptr, и рассматривались
способы их применения для упрощения
реализации одиночной и множественной
композиции с ответственностью за
уничтожение дочерних объектов.
В завершении
речь шла о вариантах оптимизации
быстродействия композиции объектов за
счет использования стандартных реализаций
отображений и множеств, а также особенности
применения композиции с кратностью
многие-ко-многим, в частности, обязательность
форвардных деклараций для разрыва
компиляционных зависимостей.