enum
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/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] 열거형 타입 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
}
• C에서 enum 타입이 있지만 비교 시, 정수 형태로 비교해야 하는 문제가 있다.
• 다른 enum 끼리 타입을 비교하거나 정수 형태로 초기화하는 것을 방지 해준다.
• enum에 할당할 바이트 양을 정할 수 도 있다.
• for 문과 같이 반복자 활용시 static_cast 처리로 복잡해 보일 수 있다.
enum class eScoreType : uint8_t
{
A,
B,
C,
count,
};
for (int i = static_cast<int>(eScoreType::A);
i < static_cast<int>(eScoreType::count);
++i)
{
// code
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] 임시(temporary) 객체 (22) | 2025.04.26 |
---|---|
[C++] 소멸자 함수 (9) | 2025.04.25 |
[C/C++] 메모리 영역(스택, 힙, 데이터 영역) (6) | 2025.04.20 |
[C/C++] 비트 필드 구조체 (8) | 2025.03.23 |
[C++] noexcept (3) | 2025.03.20 |
댓글