Hardумные указатели
Что такое aliasing constructor у shared_ptr?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Aliasing constructor: shared_ptr<U>(owner, U* ptr) — создаёт shared_ptr<U>, делящий счётчик с owner, но указывающий на другой объект (часто член owner).
struct Widget { int value = 42; };
auto sp = std::make_shared<Widget>();
// memberPtr делит счётчик с sp, указывает на sp->value
std::shared_ptr<int> memberPtr(sp, &sp->value);
sp.reset(); // Widget НЕ удалён, пока memberPtr жив
*memberPtr; // 42Полезно для возврата shared_ptr на член: родитель жив, пока жив указатель на член.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.