Язык программирования C++ для профессионалов

       

Перечисления


Есть способ связывания имен с целыми константами, который часто более удобен, чем описание с const. Например:

enum { ASM, AUTO, BREAK };

Здесь определены три целых константы, которые называются элементами перечисления, и им присвоены значения. Поскольку по умолчанию значения элементов перечисления начинаются с 0 и идут в возрастающем порядке, то приведенное перечисление эквивалентно определениям:

const ASM = 0; const AUTO = 1; const BREAK = 2;

Перечисление может иметь имя, например:

enum keyword { ASM, AUTO, BREAK };

Имя перечисления становится новым типом. С помощью стандартных преобразований тип перечисления может неявно приводиться к типу int. Обратное преобразование (из типа int в перечисление) должно быть задано явно. Например:

void f() { keyword k = ASM; int i = ASM; k = i // ошибка k = keyword(i); i = k; k = 4; // ошибка }

Последнее преобразование поясняет, почему нет неявного преобразования из int в перечисление: большинство значений типа int не имеет представления в данном перечислении. Описав переменную с типом keyword вместо очевидного int, мы дали как пользователю, так и транслятору определенную информацию о том, как будет использоваться эта переменная. Например, для следующего оператора

keyword key;

switch (key) { case ASM: // выполнить что-либо break; case BREAK: // выполнить что-либо break; }

транслятор может выдать предупреждение, поскольку из трех возможных значений типа keyword используются только два.

Значения элементов перечисления можно задавать и явно. Например:

enum int16 { sign=0100000, most_significant=040000, least_significant=1 };



Задаваемые значения необязательно должны быть различными, положительными и идти в возрастающем порядке.

on_load_lecture()

Дальше »

  Если Вы заметили ошибку - сообщите нам.  
Страницы:

« |

1

|

2

|

3

|

4

|

5

|

6

|

7

|

8

|

9

|

вопросы | »

|

учебники

|

для печати и PDA

Курсы | Учебные программы | Учебники | Новости | Форум | Помощь



Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru

© 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование



Содержание раздела