Easystatic
Что такое static-члены класса и как их использовать?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Static-член — один экземпляр на весь класс, не на объект. Static-поле требует определения в .cpp (до C++17). Static-метод не имеет this, может обращаться только к static-членам.
// header.h
class Counter {
static int count_; // объявление
public:
Counter() { ++count_; }
static int get() { return count_; } // нет this
static inline int max = 100; // C++17: определение в заголовке
};
// counter.cpp
int Counter::count_ = 0; // определение (НЕ в заголовке!)
Counter::get(); // доступ без объекта- Применение: счётчики объектов, фабрики, утилиты (
Math::sqrt), singleton; - C++17
inline static/constexpr staticпозволяют определить в заголовке без ODR-проблем; - Не злоупотреблять — глобальное состояние затрудняет тестирование и многопоточность.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.