Mediumstatic
Что такое static-локальная переменная функции?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Static-локальная существует всю программу, но доступна только внутри функции. Инициализируется при первом вызове; с C++11 — гарантированно thread-safe.
int nextId() {
static int id = 0; // инициализируется один раз
return id++;
}
// Ленивый singleton (Meyers)
Logger& Logger::instance() {
static Logger inst; // thread-safe init (C++11)
return inst;
}Стоимость: первый вызов — atomic check + init, последующие — лёгкий atomic check. Минус: глобальное mutable state, сложнее тестирование. Thread-safety касается только инициализации, не всех вызовов функции.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.