Когда нужен switch
switch удобен, когда одно выражение сравнивается с набором постоянных значений.
int command = 2;switch (command) { case 1: std::cout << "Новая игра\n"; break; case 2: std::cout << "Загрузить игру\n"; break; case 3: std::cout << "Выход\n"; break; default: std::cout << "Неизвестная команда\n"; break;}case задаёт вариант, break завершает выполнение switch, а default обрабатывает все остальные значения.
Почему важен break
Без break выполнение продолжится в следующем case. Такое поведение называется проваливанием (fallthrough). Иногда оно намеренно используется для объединения вариантов:
switch (key) { case 'w': case 'W': MoveForward(); break; default: break;}Перечисления
Для набора именованных состояний хорошо подходит enum class:
enum class GameState { Menu, Playing, Paused, GameOver};GameState state = GameState::Playing;switch (state) { case GameState::Menu: ShowMenu(); break; case GameState::Playing: UpdateGame(); break; case GameState::Paused: ShowPause(); break; case GameState::GameOver: ShowResult(); break;}enum class не преобразуется автоматически в целое число и не загрязняет окружающую область имён значениями перечисления.
Ограничения
Обычный switch принимает целочисленные типы, перечисления и некоторые совместимые типы. Для произвольных строк, диапазонов и сложных логических условий обычно используют if или контейнер с обработчиками.
Итог
Используй switch, когда выбираешь действие по одному дискретному значению. Не забывай о break и обрабатывай неожиданные значения через default, если это уместно.
