C++ 개념 정리

8. Enum Vs Enum Class

CE : 하랑 2026. 1. 4. 16:28

ENUM

1. 서로 다른 enum의 멤버의 이름이 중복될 수 없다.

enum MyEnum
{
    test,
    test1,
    test2
};

enum MyENum2
{
    test,
    test3,
    test4
};

int main()
{
    MyEnum test = test1;
}

다른 Enum 목록이라도 같은 이름의 Enum을 재정의 하면 터짐

 

2. enum 타입의 값들이 자동으로 정수로 변환되어 계산, 비교 및 출력된다.

반복문과 같이 바로 정수처럼 사용할 수 있다. 이는 컴파일러가 묵시적으로 정수타입으로 변환해주기 때문이다.

enum MyEnum
{
    test,
    test1,
    test2
};

enum MyENum2
{
    test3,
    test4,
    test5
};

int main()
{
    MyEnum a = test;
    MyENum2 b = test3;

    if(a == b){
        int bb = 0;
    }
}

 

3. 특정 enum 멤버를 따로 선언 및 초기화하지 않고 사용 가능하기 때문에 소속이 불분명하며 실수할 여지를 줄 수 있다. + 구분이 안됨

 

 

 

Enum Class -> 사용 권장

1.  enum class라는 특정 타입을 가진다. 따라서 서로 다른 enum class 멤버의 이름이 중복될 수 있다.

enum class MyEnum
{
    test,
    test1,
    test2
};

enum class MyENum2
{
    test,
    test1,
    test2
};

int main()
{
    MyEnum a = MyEnum::test;
    MyENum2 b = MyENum2::test;

}

 

2. 형변환을 하지 않는 이상 서로 다른 enum class 타입끼리 비교할 수 없다.

 

3. class라는 타입이 생겼기 때문에 멤버를 소속없이 이름만 가지고 사용할 수 없다. -> + 구분 해줌

 

'C++ 개념 정리' 카테고리의 다른 글

10. C++ 전처리문  (0) 2026.01.11
9. 스마트 포인터  (0) 2026.01.11
7. C++ 형변환  (1) 2026.01.03
6. 생성자, 소멸자  (0) 2026.01.03
5. 연산자  (0) 2026.01.03