1) enum ключевое слово обозначающее перечисление - целочисленный набор данных обозначаемых псевдонимами.
2) Члены перечисления подобны константным целочисленным переменным или макроопределениям.
3) Значение члена перечисления нельзя изменить после объявления.
4) Элементы членов перечисления могут иметь одинаковые целочисленные значения.
#include <iostream> // cout
using namespace std;
int main(){
enum {INT, FLOAT, STRING}; // Неименованное перечисление
cout << FLOAT << endl; //1 по умолчанию первый член перечисления равен нулю, второй единице и т.д.
enum digit{ZERO, ONE, TWO, THREE}; // Именованное перечисление digit
cout << digit::TWO << endl; //2 Можно обращаться к членам через имя перечисления digit
cout << TWO << endl; //2 Но можно обращаться к членам как к неименованному перечислению
enum {A = 8, B, C = -3, D, E}; // Можно задавть явно целочисленные значения элементам перечисления, неинициализированные элементы за ними будут иметь возростающие значения
cout << A << " " << B << " " << C << " " << D << " " << E << endl; //8 9 -3 -2 -1
}
1) В С++11 введены перечисления с ключевым словом class и обязательным заданием имени перечисления.
2) Доступ к членам перечисления осуществляется только через ИмяПеречисления :: ИмяЧлена
3) Необходимо выполнять преобразования для приведения значения перечисления к целочисленному виду (типа static_cast
#include <iostream> // cout
using namespace std;
int main(){
enum class my_fruits{APPLE = 1, PEAR, PEACH}; // Перечисление С++11
cout << static_cast<int>(my_fruits::PEACH) << endl; //3
}