C_C++

(C++) 열거형 enum

고니자니 2024. 10. 13. 18:20
반응형

C++에서 열거형(enumeration)은 열거된 상수 값들의 집합을 정의하는 데 사용되는 사용자 정의 데이터 타입입니다. 열거형을 사용하면 코드의 가독성과 유지보수성을 높일 수 있습니다. 각 열거형 값은 기본적으로 정수형 값을 가지며, 첫 번째 값은 0부터 시작하고 이후 값들은 순차적으로 1씩 증가합니다. 물론, 원하는 경우 특정 값을 직접 지정할 수도 있습니다.

 

열거형 기본 문법

enum 열거형이름 {
    값1,
    값2,
    값3
};

 

예제: 요일 열거형 정의

#include <iostream>
using namespace std;

enum Weekday {
    Sunday,    // 0
    Monday,    // 1
    Tuesday,   // 2
    Wednesday, // 3
    Thursday,  // 4
    Friday,    // 5
    Saturday   // 6
};

int main() {
    Weekday today = Monday;

    if (today == Monday) {
        cout << "Today is Monday!" << endl;
    }

    // 열거형 값을 정수로 출력
    cout << "Sunday is " << Sunday << endl;
    cout << "Friday is " << Friday << endl;

    return 0;
}

(Output)

Today is Monday!

Sunday is 0

Friday is 5

(C++) 열거형 enum

 

값 직접 지정하기

열거형 값은 기본값 외에 원하는 값으로 지정할 수도 있습니다.

enum Color {
      Red = 1,
      Green = 5,
      Blue = 10
};

 

위 코드에서 Red는 1, Green은 5, Blue는 10의 값을 가집니다.

 

클래스 기반 열거형(enum class)

C++11부터는 enum class라는 새로운 열거형이 추가되었습니다. enum class는 네임스페이스와 비슷한 역할을 하여 같은 이름을 가진 다른 열거형 값들과 충돌하는 것을 방지합니다.

#include <iostream>
using namespace std;

enum class Direction {
    North,
    South,
    East,
    West
};

int main() {
    Direction dir = Direction::North;

    if (dir == Direction::North) {
        cout << "Heading North!" << endl;
    }

    return 0;
}

 

enum과 enum class의 차이점

  • enum은 전역적으로 접근이 가능하지만, enum class는 반드시 열거형 이름을 명시하여 접근해야 합니다.
  • enum은 암시적으로 정수형으로 변환될 수 있지만, enum class는 명시적으로 변환해야 합니다.

C++에서 열거형을 사용하면 코드의 의미를 더 명확하게 하고, 잘못된 값을 사용하지 않도록 제한할 수 있어 유용합니다.

 

반응형