Sanyo 2024. 6. 5. 15:20

Enum. 열거형이라고 부른다. Enum에 익숙해지면 코드의 가독성을 매우 높일 수 있다.

 

c++ 에서의 enum은 매우 단순한 형태로 이루어져 있다.

  • enum { contant_name1, Constant_name2. …, Contant_namen };

바로 예시를 살펴보자.

#include <iostream>
int main(int argc, char *argv[])
{
    enum WEEK
    {
        Monday,
        Tuesday,
        Wednesday,
        Thursday,
        Friday,
        Saturday,
        Sunday
    };
    WEEK day1 = Monday;
    WEEK day2 = Sunday;
    std::cout << "day1 = " << day1 << "\n";
    std::cout << "day2 = " << day2 << "\n";
    return 0;
}

위 코드에서는 WEEK라는 열거형을 만들고 사용했다. 위 코드의 실행 결과는 어떻게 될까?

분명 그냥 Monday, Tuesday이런 식으로 저장했는데, 이게 문자열로 출력되지는 않을 것 같고... 어떻게 출력될까?

 

저 코드의 출력 결과는

day1 = 0
day2 = 6

이 된다.

enum의 값은 int타입일까?

그건 아니다. 정수형으로 취급되지만 int로 분류하지는 않는다. 대부분은 저 0과 1의 값을 직접 프로그래머가 출력할 일은 많지 않다.

그 대신 enum을 사용해서 조건문 등을 작성한다.

 

#include <iostream>

int main(int argc, char *argv[])
{
    enum WEEK
    {
        Monday = 1,
        Tuesday,
        Wednesday,
        Thursday,
        Friday,
        Saturday,
        Sunday
    };
    int day;
    std::cin >> day;
    switch (day)
    {
    case Tuesday:
    case Thursday:
        std::cout << "c++ Programming"
                  << "\n";
        break;
    default:
        std::cout << "free"
                  << "\n";
    }
    return 0;
}

다음과 같이 Enum의 값을 사용해서 분류하게 된다.

 

case 0, case 1 등으로 분류하는 것보다 코드의 가독성이 훨씬 좋아진다.