반도체/C++

C++ enum 열거형

Clair_de_Lune 2024. 12. 4. 09:38
728x90
 

enum은 열거형 타입으로, 관련된 상수 집합을 정의하는 데 유용

 

 

1. 기본적인 enum 사용
cpp


enum Color {
    RED,
    GREEN,
    BLUE
};
위와 같이 Color라는 이름의 열거형을 정의할 수 있습니다. 기본적으로 RED는 0, GREEN은 1, BLUE는 2의 값을 가집니다.

2. 특정 값 할당
각 상수에 특정 값을 할당할 수 있습니다.

cpp


enum Status {
    SUCCESS = 0,
    ERROR = 1,
    PENDING = 2
};
3. enum class 사용
C++11부터 도입된 enum class를 사용하면 더 강력한 형식 안전성을 제공합니다. 같은 이름의 열거형이 다른 enum class에 있을 수 있습니다.

cpp


enum class Direction {
    NORTH,
    SOUTH,
    EAST,
    WEST
};

// 사용 예
Direction dir = Direction::NORTH;
4. 스코프와 타입 안전성
enum class는 스코프를 가지므로, 다른 열거형과 이름이 충돌하지 않습니다. 또한, 기본적으로 정수형과의 암시적 변환이 불가능하여 타입 안전성을 높입니다.

cpp


if (dir == Direction::NORTH) {
    // 처리 로직
}
5. 비트 플래그로 사용
enum을 비트 플래그로 사용하면 여러 상태를 조합할 수 있습니다.

cpp


enum class FilePermissions {
    READ = 1 << 0,   // 1
    WRITE = 1 << 1,  // 2
    EXECUTE = 1 << 2 // 4
};

// 비트 연산을 통한 조합
FilePermissions permissions = FilePermissions::READ | FilePermissions::WRITE;
6. 함수와 함께 사용
enum을 함수의 매개변수로 사용할 수 있습니다. 이를 통해 가독성을 높이고 코드의 의도를 명확히 할 수 있습니다.

cpp


void setColor(Color color) {
    // 색상 설정 로직
}

setColor(RED);
7. enum의 문자열 변환
enum 값을 문자열로 변환하거나 그 반대의 작업을 수행하는 헬퍼 함수를 만드는 것이 유용합니다.

cpp


std::string colorToString(Color color) {
    switch (color) {
        case RED: return "Red";
        case GREEN: return "Green";
        case BLUE: return "Blue";
        default: return "Unknown";
    }
}

728x90

'반도체 > C++' 카테고리의 다른 글

클래스 잘쓰는법  (0) 2024.12.04
38. C++ 화살표 연산자  (0) 2024.09.04
36. C++에서 배열과 포인터 관계  (0) 2024.09.03
35. C++에서의 포인터 개념  (0) 2024.09.03
34.1 사원 관리 프로그램 추가 C++  (0) 2024.09.03