요약은 맨아래
C++ 11 버전에서 새로 도입된 열거형이다.
(참고로 열거형이란 '상수 집합을 정의하는 강력한 도구' 라고 한다. 1,2,3... 등)
이전에는 enum 키워드를 사용하여 열거형(상수 집합)을 쓸 뿐이였지만 class 형태로 고도화 된 것이다.
가장 큰 차이점은 enum 의 경우 아래와 같은 사용이 가능하나
enum Number {
One = 1,
Two,
Three,
};
Number myNumber = Number::Three; // myNumber == 3
std::cout << myNumber << std::endl;
enum class 의 경우 불가능하다
enum Number {
One = 1,
Two,
Three,
};
Number myNumber = Number::Three; // myNumber == 3
std::cout << myNumber << std::endl; // Compile Error
왜냐하면 enum class 는 암시적 형변환이 되지 않으며, 명시적인 형변환만이 가능하기 때문이다.
따라서 아래와 같이 사용하면 된다.
enum Number {
One = 1,
Two,
Three,
};
Number myNumber = Number::Three; // myNumber == 3
std::cout << static_cast<int>(myNumber) << std::endl;
- 요 약 -
한마디로 static_cast<int> 쓰라고
아 물론 (int) 도 된다.
반응형
'C,C++' 카테고리의 다른 글
cin, cout, cerr, clog 와 endl 에 대하여 (0) | 2023.07.18 |
---|---|
iostream 헤더 파일 이란 <iostream> (0) | 2023.07.17 |
[C/C++] WORD, DWORD, QWORD (1) | 2019.03.04 |
[C/C++] h, cpp 의 관계, include 의 원리 (0) | 2019.02.14 |
[C++]warning C4482 : 비표준 확장 에 대해서 (0) | 2019.01.31 |