아래 차이점은 현재는 거의 적용되지 않습니다

enum vs enum_class

  • enum (C 스타일 열거형):

    • 기본적으로 정수형 값을 가집니다.
    • 이름 충돌이 발생할 수 있습니다. 같은 이름의 변수orenum 값 이름이면, 다른 enum 값 이름 에서 충돌이 발생할 수 있습니다.
    • enum 값이 암시적으로 정수형으로 변환될 수 있습니다.
      • 최신 컴파일러에서는 사전에 대부분 방지 되기에, 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

+ Recent posts

let textNodes = document.querySelectorAll("div.tt_article_useless_p_margin.contents_style > *:not(figure):not(pre)"); textNodes.forEach(function(a) { a.innerHTML = a.innerHTML.replace(/`(.*?)`/g, '$1'); });