Mediumenum
Что такое перечисление (enum) и чем enum class отличается от обычного enum?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Обычный `enum` (C-style) вводит имена в enclosing scope и неявно приводится к int. `enum class` (C++11, scoped enum) — строго типизирован: имена внутри Color::, не приводится к int неявно.
// Обычный enum: коллизии имён, неявное приведение
enum Color { RED, GREEN };
int x = RED; // OK (проблема: неожиданное приведение)
// enum class: строго типизирован
enum class Color2 { Red, Green };
Color2 c = Color2::Red; // нужно Color2::
// int y = c; // ОШИБКА: нет неявного приведенияenum class можно параметризовать базовым типом: enum class Color : uint8_t { ... }. Это выбор по умолчанию в новом коде.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.