C++ 열거형 enum 활용

C++에서 연관된 정수형 상수들을 하나의 타입으로 관리하는 열거형(Enum)은 코드의 의미를 명확히 하고 가독성을 높이는 도구다.

기존 enum의 한계를 극복한 enum class를 중심으로 활용법을 분석한다.

기본 열거형 (Unscoped Enum)

전통적인 방식의 열거형으로, 내부 상수가 전역 네임스페이스에 노출되는 특징이 있다.

enum Color {
    RED,    // 0
    GREEN,  // 1
    BLUE    // 2
};

Color myColor = RED;
int val = GREEN; // 정수형으로 자동 형변환 가능

영역 지정 열거형 (Scoped Enum / enum class)

C++11에서 도입된 enum class는 타입 안정성이 강화되었으며, 범위 지정 연산자(::)를 통해 접근해야 한다.

enum class Status {
    Ready,
    Running,
    Error
};

Status current = Status::Ready;
// int val = current; // 에러: 자동 형변환 불가 (명시적 캐스팅 필요)

if (current == Status::Running) {
    // 로직 수행
}

enum class를 권장하는 이유

  • 이름 충돌 방지: 서로 다른 열거형에서 동일한 상수 이름을 사용할 수 있다.
  • 타입 안정성: 의도치 않은 정수 연산을 방지하여 런타임 오류를 줄인다.
  • 기본 타입 지정: 열거형의 실제 저장 타입을 지정하여 메모리를 절약할 수 있다.

    cpp
    enum class SmallEnum : char { A, B, C };

P.S

코드 내에서 의미를 알 수 없는 숫자(Magic Number)를 사용하는 대신 열거형을 활용하면 유지보수 효율이 비약적으로 향상된다.

현대 C++ 개발에서는 안전한 enum class 사용이 표준인 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts