C++ 열거형(Enum) 데이터 타입이란?
열거형(enumerated type)은 하나의 타입 이름과, 해당 타입의 값으로 사용할 수 있는 0개 이상의 식별자 집합을 선언하는 데이터 타입입니다. 여기서 각 열거자(enumerator)는 그 타입이 곧 열거형 자체인 상수로 취급됩니다.
열거형은 프로그램에서 어떤 변수가 가질 수 있는 값의 종류가 미리 정해져 있을 때 특히 유용합니다. 예를 들어 성별(gender)을 표현한다고 해봅시다. 성별은 남성(MALE), 여성(FEMALE), 기타(OTHERS)라는 세 가지 값만 가질 수 있습니다. 이런 경우 다음과 같이 enum을 정의하고 사용할 수 있습니다.
#include<iostream>
using namespace std;
enum Gender {MALE, FEMALE, OTHERS};
int main() {
Gender gen = FEMALE;
return 0;
}
열거형의 기본값 규칙
기본적으로 첫 번째 열거자의 값은 0, 두 번째는 1, 세 번째는 2처럼 순차적으로 1씩 증가합니다. 위 예제에서 MALE은 0, FEMALE은 1, OTHERS는 2의 값을 가집니다.
하지만 이러한 실제 숫자 값은 크게 중요하지 않습니다. 열거형은 본질적으로 값에 기호적(symbolic) 의미를 부여하기 위해 사용되기 때문입니다. 프로그램 내에서 열거형 값을 비교할 때도 실제 숫자가 아닌 기호적 의미를 기준으로 다루게 되며, 이를 통해 코드의 의도를 명확하게 드러낼 수 있습니다.
열거자 값 직접 지정하기
필요하다면 기본값 대신 원하는 값을 직접 할당할 수도 있습니다.
enum Gender {MALE = 1, FEMALE = 2, OTHERS = 3};
일부 열거자에만 값을 지정하면, 이후 열거자들은 이전 값보다 1 큰 값을 자동으로 갖습니다.
열거형을 사용하면 좋은 점
- 가독성 향상: 0, 1 같은 매직 넘버 대신 의미 있는 이름을 사용해 코드를 이해하기 쉽게 만듭니다.
- 유지보수 용이: 값의 종류가 변경되더라도 enum 정의 한곳만 수정하면 됩니다.
- 타입 안전성: Gender 타입 변수에는 정의된 열거자만 대입되므로 잘못된 값 입력을 줄일 수 있습니다.