반응형
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 자체는 없지만 권장하지 않음
}
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
}
반응형
댓글