Mediumумные указатели
Чем std::unique_ptr отличается от std::shared_ptr?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
`unique_ptr` — эксклюзивное владение: нельзя копировать, только move. Практически без накладных расходов (sizeof == sizeof(T*)). `shared_ptr` — разделяемое владение через atomic-счётчик ссылок.
auto u = std::make_unique<Widget>();
// auto u2 = u; // ОШИБКА: нельзя копировать
auto u3 = std::move(u); // OK: владение передано, u == nullptr
auto s1 = std::make_shared<Widget>();
auto s2 = s1; // OK: счётчик ссылок = 2По умолчанию — unique_ptr; shared_ptr — только когда владение действительно разделяется между сущностями с неизвестным временем жизни.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.