Перечисления, также известные как enum или enumeration, — полезный инструмент во многих языках программирования, включая C++. Они позволяют создавать наборы именованных констант, повышая читаемость и удобство обслуживания кода.
Что такое перечисления?
Перечисление — это способ объявления нескольких переменных с присваиванием им числовых значений. Это особенно полезно для организации и структурирования кода, когда требуется использовать несколько связанных констант. Например, вместо использования магических чисел (непонятных числовых значений в коде) для обозначения различных уровней, состояний или типов, можно использовать именованные константы перечисления.
Объявление и использование перечислений
Объявление перечисления начинается с ключевого слова enum, за которым следует имя перечисления и фигурные скобки, содержащие список элементов. Каждому элементу можно явно присвоить значение; в противном случае значения присваиваются по умолчанию, начиная с 0 и увеличиваясь на 1 для каждого последующего элемента.
enum Tree {
TreeOne,
TreeTwo,
TreeThree
};
// Вывод на экран: 0 1 2
std::cout << TreeOne << " " << TreeTwo << " " << TreeThree << std::endl;
Если явно задать значение для первого элемента, последующие элементы будут получать значения, увеличиваясь на 1 относительно предыдущего:
enum Tree {
TreeOne = 1,
TreeTwo,
TreeThree = 45,
TreeFour
};
// Вывод на экран: 1 2 45 46
std::cout << TreeOne << " " << TreeTwo << " " << TreeThree << " " << TreeFour << std::endl;
Практический пример: Лифт в торговом центре
Рассмотрим пример использования перечислений для моделирования лифта в торговом центре с четырьмя этажами: паркинг, холл, этаж с магазинами и крыша.
enum Floor {
Parking = -1,
Hall = 0,
ManyShops = 1,
Roof = 2
};
bool exit = false;
int floor;
while (!exit) {
std::cout << "Enter floor from -1 to 2: ";
std::cin >> floor;
switch (floor) {
case Parking:
std::cout << "You are on the Parking floor." << std::endl;
break;
case Hall:
std::cout << "You are on the Hall floor." << std::endl;
break;
case ManyShops:
std::cout << "You are on the ManyShops floor." << std::endl;
break;
case Roof:
std::cout << "You are on the Roof floor." << std::endl;
break;
default:
std::cout << "Floor only from -1 to 2" << std::endl;
break;
}
std::cout << "To exit enter 1, to continue enter 0: ";
std::cin >> exit;
}
В этом примере перечисление Floor делает код более понятным и легко поддерживаемым, чем использование магических чисел (-1, 0, 1, 2).
Перечисления — мощный инструмент для повышения читаемости и организации кода в C++. Они упрощают работу с наборами именованных констант, делая код более понятным и удобным для обслуживания. Важно использовать перечисления разумно, избегая чрезмерного применения и убедившись, что они действительно улучшают структуру кода.