아래 차이점은 현재는 거의 적용되지 않습니다
enum vs enum_class
enum
(C 스타일 열거형):- 기본적으로 정수형 값을 가집니다.
- 이름 충돌이 발생할 수 있습니다. 같은 이름의 변수or
enum 값 이름
이면, 다른enum 값 이름
에서 충돌이 발생할 수 있습니다. enum
값이 암시적으로 정수형으로 변환될 수 있습니다.- 최신 컴파일러에서는 사전에 대부분 방지 되기에, enum class와 별 차이 없는 경우가 많음. (그래도 가급적
enum class
사용 권장)
- 최신 컴파일러에서는 사전에 대부분 방지 되기에, enum class와 별 차이 없는 경우가 많음. (그래도 가급적
enum class
(C++11 스타일 열거형):- 강력한 형식 체계를 제공합니다.
- 이름 충돌이 발생하지 않습니다. 같은 이름의 열거형 값을 다른
enum class
에서 사용할 수 있습니다. enum class
값은 명시적으로 변환하지 않는 한 다른 형식으로 변환되지 않습니다.
using enum
- c++20 부터 지원
- using namespace 처럼 열거값을 짧게 쓰도록 지원
- 사용 시, 스코프 최소화 권장 <- 개인적으로 너무 긴 거 아니면 안 쓰는게 좋을 듯 함.
enum class Color { Red, Green, Blue }; void printColor(Color color) { using enum Color; // Color 열거형 값을 현재 스코프에서 사용할 수 있도록 함 switch (color) { case Red: std::cout << "The color is red" << std::endl; break; case Green: std::cout << "The color is green" << std::endl; break; case Blue: std::cout << "The color is blue" << std::endl; break; } }
- 사용 시, 스코프 최소화 권장 <- 개인적으로 너무 긴 거 아니면 안 쓰는게 좋을 듯 함.
'공부 > C++' 카테고리의 다른 글
클래스 (0) | 2025.03.03 |
---|---|
함수 (1) | 2025.03.03 |
C++ 변수 (0) | 2025.03.03 |
C++ 여러가지 기본 (0) | 2025.03.02 |
C++20: 모듈 선언 (0) | 2025.03.02 |