본문 바로가기
카테고리 없음

[C++] enum class와 enum

by 까망 하르방 2024. 6. 7.
반응형

enum은 순차적으로 나열된 정수형 상수를 만들 때 사용

사용할 때는 enum 키워드 없이 이름을 가져와 사용하면 된다.

enum SU {
    ONE = 1,
    TWO,
    THREE,
    FIVE = 5,
    SIX,
};

SU num = ONE;




enum 변수 크기는 int형 크기이지만
int 형과는 엄연히 다른 자료형이다.

#include <iostream>

using namespace std;

enum week { SUN, MON, TUE, WED, THU, FRI, SAT };

int main(void)
{
    week w;
    w = 5; //  error 
    w = MON;
    int n = SUN; // error 자체는 없지만 권장하지 않음
}

 


📌 [C] 열거형 타입 enum 이란?

 

[C/C++] 열거형 타입 enum 이란?

enum 타입이란?#include enum Day { Sunday, Monday = 10, Tuesday, Wednesday, Thursday = 20, Friday, Saturday};int main(){ printf("Sunday : %d \n", Sunday); printf("Monday : %d \n", Monday); printf("Tuesday : %d \n", Tuesday); printf("Thursday : %d \n", T

zoosso.tistory.com

 

 

📌 [C] typedef enum 활용

 

[C] typedef enum 활용

[C] 열거형 타입 enum 이란?을 먼저 읽고 오시는 것을 권장 드립니다. enum 타입은 typedef 키워드와 주로 함께 사용된다. typedef는 타입의 별칭을 생성하고 실제 타입 이름 대신 별칭을 사용할 수 있게

zoosso.tistory.com


enum class

• C++11 부터는 enum class가 새롭게 도입

• 같은 이름의 열거형 요소가 다른 열거형과 충돌하지 않도록 한다.

• enum 변수에 int 형 정수가 대입이 불가능하며 enum형 상수만 대입 가능

#include <iostream>

enum class week { SUN, MON, TUE, WED, THU, FRI, SAT }; //  


int main(void)
{
    week w;
    
    w = 3; //  error
    int n = SUN; // error
    w = MON; // error
    
    w = week::MON;  // ok
    int n = static_cast<int>(week::SUN); // ok
}

 

 

소속을 명시하거나 static_cast 사용으로 코드가 길어졌지만

enum 사용하는 관점에서는 더 안정적!

#include <iostream>

enum class week { SUN, MON, TUE, WED, THU, FRI, SAT }; //  


int main(void)
{
    week w;
    
    w = 3; //  error
    int n = SUN; // error
    w = MON; // error
    
    w = week::MON;  // ok
    int n = static_cast<int>(week::SUN); // ok
}
반응형

댓글