- Перечисление - это только значение, а не значение.У него нет адреса.
- Перечисление может быть только константой времени компиляции, но не константой времени выполнения.
- Перечисления не добавляют никаких объектов в файл объекта.
- Перечисления компилируются быстрее и используют меньше памяти во время компиляции.Обычно это незначительно, но если вы делаете достаточно сложное метапрограммирование, это может начать иметь значение.
В общем, для вещей, которые являются константами времени компиляции, а не константами времени выполнения, нет недостатка в использованииперечисление, и оно имеет преимущества, делающие ваши намерения абсолютно ясными и незначительно более эффективными.
Редактирование: еще один вариант использования перечислений может привести к неоднозначности для компилятора, должна ли функция оцениваться во время выполнения или компилироватьсявремя.Если результат функции назначен на переменную стека immutable
, функция будет оценена во время выполнения.Если вы используете enum
в той же области, результат будет оценен во время компиляции.