enumeration declaration
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
Перечисление представляет собой особый тип, значение которой ограничивается одним из нескольких явно именованных констант ("счетчики"). Значения констант - это значения целого типа, известного также как базовый тип перечисления.
enum name : type attr { enumerator = constexpr , enumerator = constexpr , ... None}
|
(1) | |
enum class name : type attr { enumerator = constexpr , enumerator = constexpr , ... None}
|
(2) | (начиная с C++11) |
enum struct name : type attr { enumerator = constexpr , enumerator = constexpr , ... None}
|
(3) | (начиная с C++11) |
заявляет незаданной типа перечисления. Каждый enumerator становится доступным в окружающем сферу, и неявно, конвертируемых в интегрального типа, в том числе bool. Если прямо не указано, базовый тип является неотъемлемой тип, способный представлять все значения счетчиков, которые не могут быть шире, чем int если некоторые constexpr оценивается как константа, которая не вписывается в int
2-3) Оригинал:
declares an unscoped enumeration type. Each enumerator becomes accessible in the enclosing scope, and is implicitly-convertible to integral type, including bool. If not explicitly specified, the underlying type is an integral type capable of representing all enumerator values, which cannot be wider than int unless some constexpr evaluates to a constant that does not fit in an int
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
объявляет областью типа перечисления. Каждый enumerator могут быть доступны только в качестве name::enumerator. Преобразование целых типов можно с static_cast. Если не указан явно, основной тип int.
Оригинал:
declares a scoped enumeration type. Each enumerator can only be accessed as name::enumerator. Conversion to integral types is possible with static_cast. If not explicitly specified, the underlying type is int.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Объяснение
| name | - | Имя типа, объявленные это заявление. Незаданной перечисления могут быть безымянными, в этом случае он только вводит перечислитель имена, как постоянные, но не новый тип
Оригинал: the name of the type declared by this declaration. An unscoped enumeration may be nameless, in which case it only introduces enumerator names as constants, but no new type Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| type(C++11) | - | дополнительного интегрального типа (любого сорта квалификации игнорируется), используемый в качестве базового типа перечисления .
Оригинал: optional integral type (any cv-qualification is ignored), used as the underlying type of the enumeration. Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| attr(C++11) | - | ноль или более конкретной реализации атрибутов формы
[[attribute]] Оригинал: zero or more implementation-specific attributes of the form [[attribute]] Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| enumerator | - | ноль или более счетчиков, которые вводятся этим заявлением. Имена счетчики могут быть использованы в любом константы не ожидается
Оригинал: zero or more enumerators which are introduced by this declaration. The names of the enumerators may be used anywhere constants are expected Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| constexpr | - | дополнительное постоянное выражение, которое вычисляет значение, которое будет назначен на перечислитель. Если он опущен, значение значением предыдущего счетчика плюс 1. Если опускается для первого счетчика, значение 0
Оригинал: optional constant expression which evaluates to the value to be assigned to the enumerator. If it is omitted, the value is the value of the previous enumerator plus 1. If omitted for the first enumerator, the value is 0 Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| Этот раздел не завершён |
[править] Пример
Запустить этот код
#include <iostream> // color may be red (value 0), yellow (value 1), green (value 20), or blue (value 21) enum color { red, yellow, green = 20, blue }; // altitude may be altitude::high or altitude::low enum class altitude : char { high='h', low='l', // C++11 allows the extra comma }; // the constant d is 0, the constant e is 1, the constant f is 3 enum { d, e, f=e+2 }; int main() { color col = red; altitude a; a = altitude::low; std::cout << "red = " << col << " blue = " << blue << '\n' << "a = " << static_cast<char>(a) << '\n' << "f = " << f << '\n'; }
Вывод:
red = 0 blue = 21 a = l f = 3

