enum

김민수·2025년 1월 8일

C++

목록 보기
16/68

enum은 열거형 데이터 타입으로, 상수 값에 의미 있는 이름을 부여하기 위해 사용된다. 쉽게 말해, 숫자를 이름으로 관리하는 방법이다.


⦁ 예시

enum Day {
    SUNDAY,    // 0
    MONDAY,    // 1
    TUESDAY,   // 2
    WEDNESDAY, // 3
    THURSDAY,  // 4
    FRIDAY,    // 5
    SATURDAY   // 6
};

int main() {
    Day today = MONDAY;
    if (today == MONDAY) {
        std::cout << "오늘은 월요일입니다.\n";
    }
    return 0;
}

출력:

오늘은 월요일입니다.
  • SUNDAY는 기본값이 0, 그 다음 값은 1씩 증가
  • 정수 값으로 비교 및 연산 가능


1. enum 값 변경하기

값을 수동으로 설정할 수도 있다.

enum ErrorCode {
    SUCCESS = 0,
    WARNING = 1,
    ERROR = 100,
    FATAL = 200
};
  • 여기서 SUCCESS는 0, WARNING은 1, ERROR는 100, FATAL은 200이다.


2. enum class

  • enum class는 C++11부터 추가되어서 더 안전하고 명시적으로 enum 기능을 사용할 수 있다.
  • enum class로 선언된 값은 반드시 이름으로 접근해야 한다.
  • 일반 enum은 정수로 암묵적으로 변환될 수 있지만, enum class는 그렇지 않다.
enum class Color {
    RED,
    GREEN,
    BLUE
};

int main() {
    Color color = Color::RED;

    if (color == Color::RED) {
        std::cout << "빨간색입니다.\n";
    }

    // 아래 코드는 오류 발생 (명시적 변환 필요)
    // int value = color;

    return 0;
}

출력:

빨간색입니다.


3. enumenum class의 차이점

특징enumenum class
스코프전역 스코프제한된 스코프
타입 안전성정수로 암묵적 변환 가능암묵적 변환 불가능
구문VALUE로 접근EnumName::VALUE로 접근
선언 방식enum Name { ... };enum class Name { ... };


4. 활용 예시

  • 상태 관리: 프로그램 상태를 관리하기 위해 사용

    enum State {
        START,
        RUNNING,
        STOPPED
    };
  • 에러 코드 정의: 에러 상황을 구분하기 위해 사용

    enum Error {
        OK,
        FILE_NOT_FOUND,
        OUT_OF_MEMORY
    };
  • 옵션 정의: 옵션을 구분하거나 플래그로 사용

    enum Option {
        ENABLE = 1,
        DISABLE = 0
    };


5. 요약

  • enum : 간단한 상수 집합을 정의할 때 유용. 숫자를 이름으로 관리해 가독성 향상
  • enum class : 타입 안전성과 스코프 제한이 필요한 경우에 적합
  • C++11 이후에는 가능하면 enum class를 사용하는 것이 더 권장됨
profile
안녕하세요

0개의 댓글