C++

enum/enum class

Keisa 2023. 9. 28. 14:02

enum은 범위없는 enum

enum class는 범위 있는 enum

 

ex)

enum color = {black, white, red}

auto white = false -> enum의 white와 중복에러

-> enum에 속한 이름이 밖으로 새어나감

 

범위 없는 enum의 열거자들은 암묵적으로 정수형식으로 변환, 그리고 정수형식으로부터 암묵적으로 부동소수점 형식으로 변환

enum class는 다른 형식으로 변환하고 싶으면 캐스팅을 사용

enum class의 바탕형식은 기본적으로 int, 기본형식이 마음에 들지 않는다면 다른 형식으로 명시적 지정가능

ex) enum class status : std::uint32_t {};

 

enum에는 기본 바탕형식이 없어 구성을 보고 컴파일러가 선택

enum class는 클래스처럼 전방선언이 가능하며 컴파일 의존성을 낮출 수 있다