4.2. Перечисления - StriderAJR/StudentCpp GitHub Wiki

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

Перечисление - это пользовательский тип данных, который состоит из перечисленного набора констант.

Переменная такого типа данных может принимать только строго заданный набор значений. Значение константам можно присвоить только в фигурных скобках при определении перечисления. Изменить его ниже в коде уже нет возможности. Определяя перечисление, объявление типа и переменной необязательно.

Рассмотрим пример:

#include <iostream>
using namespace std;

namespace Enum
{
    enum Currency
    {
        Dollar, Euro, Ruble, Pound
    };

    struct BankAccount
    {
        int sum; //поле структуры BankAccount 
        Currency currency; //создание объекта Currency
    };

    void main()
    {
        BankAccount ivan;
        ivan.sum = 1200;
        ivan.currency = Ruble;

        BankAccount victor;
        victor.sum = 5000;
        victor.currency = Dollar;
    }
}

Определяем перечисление:

Для этого используется зарезервированное слово enum, далее даем название типу — в нашем случае Currency.

В фигурных скобках объявляем целочисленные константы (элементы перечисления) {Dollar, Euro, Ruble, Pound}; - Опять же не забываем про ;!

По умолчанию элементу Dollar будет присвоено значение 0, а последнему Pound — значение 3.

В данной программе мы ссоздаем переменные типа BankAccount в которых хранится сумма - sum и валюта - currency.

void main()
{
    BankAccount ivan;
    ivan.sum = 1200;
    ivan.currency = Ruble;

    BankAccount victor;
    victor.sum = 5000;
    victor.currency = Dollar;
}

Когда необходимы перечисления?

Перечисления могут использоваться, когда у нас есть ряд логически связанных констант, которые естественно лучше определить в одном общем типе данных. Например в нашем случае это валюта - Currency:

enum Currency
{
    Dollar, Euro, Ruble, Pound
};

Используя перечисления, мы можем сделать наши коды программ более понятными. В первую очередь потому, что благодаря им возможно использовать в программе не «магические числа» инициализированных где-то в коде переменных, а читаемые названия элементов перечисления. Но, как всегда, не увлекайтесь. Всего в меру.

⚠️ **GitHub.com Fallback** ⚠️