Я обычно сталкиваюсь с необходимостью создания массивов или векторов полиморфных объектов. Обычно я предпочитаю использовать ссылки, а не интеллектуальные указатели, базовому классу, потому что они, как правило, проще.
Массивы и векторы запрещены для хранения исходных ссылок, поэтому я обычно использовал интеллектуальные указатели для базовых классов. Тем не менее, есть также возможность использовать std::reference_wrapper
: https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper
Из того, что я могу сказать из документации, это то, что одно из его предназначенных видов использования, но когда возникает тема массивов, содержащих полиморфные объекты, общий совет, похоже, заключается в использовании интеллектуальных указателей, а не std::reference_wrapper
.
Моя единственная мысль заключается в том, что умные указатели могут обрабатывать время жизни объекта немного аккуратно?
TL: DR; Почему интеллектуальные указатели, такие как std::unique_ptr
кажутся предпочтительными для std::reference_wrapper
при создании массивов полиморфных объектов?