В этом уроке изложена очень интересная тема, называемая перечислениями. Перечисления используют для создания своих типов данных, значениями которых могут быть числовые константы. Для создания перечислений используется ключевое слово enum, после которого в фигурных скобках пишется список констант.
enum Temperature { FREEZING, COLD, NORMAL, HOT, BOILING };
Так создается новый тип Temperature, значениями которого есть пять числовых констант. При их использовании можно использовать и их числовые аналоги. В данном случае это 0 - 4. Но было бы логично для первых двух констант использовать отрицательные значения. Это можно сделать при помощи оператора присвоения:
enum Temperature { FREEZING = -2, COLD, NORMAL, HOT, BOILING };
Обратите внимание, что, задав определенное числовое и обязательно целочисленное значение первой константе, мы задали и для всех последующих.Таким образом мы получили значения переменных FREEZING (-2), COLD (-1), NORMAL (0), HOT (1), BOILING (2). Но как с ними работать? Да как с обычными переменными! Рассмотрим пример
#include <iostream>
using namespace std;
enum Temperature { FREEZING = -2, COLD, NORMAL, HOT, BOILING };
int main() {
Temperature temperature;
temperature = FREEZING;
cout << temperature << endl;
system("pause");
}
Важно заметить, что переменным нашего перечисления можно присваивать только значения самого этого перечисления, но не как их значения в int! И так мы получили в результате работы программы значение -2. Это довольно странно, ведь если мы напишем temperature = -2, то он подчеркнет данную строчку и скажет, что так делать нельзя. Но ничего, так работает этот язык программирования. Чтобы наша программа выводила именно текстовые строки, напишем собственную функцию. И не забудем подключить библиотеку <string>, чтобы выводить строки командой cout.
#include <iostring>
#include <string>
using namespace std;
enum Temperature { FREEZING = -2, COLD, NORMAL, HOT, BOILING };
string toString(Temperature temperature) {
switch (temperature) {
case FREEZING: return "FREEZING"; break;
case COLD: return "COLD"; break;
case NORMAL: return "NORMAL"; break;
case HOT: return "HOT"; break;
case BOILING: return "BOILING"; break;
}
}
int main() {
Temperature temperature;
temperature = FREEZING;
cout << temperature << endl << toString(temperature) << endl;
system("pause");
}