enum class는 enum의 부족함과 단점을 보완하기 위해 나왔다.
enum은 별도의 이름을 가지고 있지 않은 것이 문제점이었다.
enum을 주의 없이 여러개 사용하다 보면 이름이 중복 되는데
그것을 방지하기 위해 enum class가 도입되었다.

스마트폰과 한국 스마트폰 열거형을 선언해 각각에 해당되는 열거자 이름을 채워넣었다.
화면에 Galaxy에 해당되는 멤버를 int형으로 출력을 하려 하자 중복된 열거자여서 오류가 발생했다.
이 경우 오류 해결 방법이 여러가지인데,
1. enum의 열거자 이름이 중복되지 않게 접두나 접미에 이니셜같이 특정 문자를 넣어서 사용하는 것이다.

2. 별도의 namespace를 만들어 사용

3. enum class

enum class를 사용함으로서 얻는 이점
명시적 형변환을 해줘야한다.
기존의 enum은 int로 형변환이 내부적으로 자동 변환이 되었다면 enum class는 내부적으로 자동 변환하지 않고 오류를 발생시킨다.
어떻게 보면 단점일 수도 있으나, 이 부분은 enum class가 모자라서 그런 것이 아니라 원래 enum의 용도가 int를 사용하기위함이 아닌 목록의 항목들을 표기하기 위함이기 때문에 좀 더 제약적으로 변화하게 된 것이다.
또한 전방 선언이 가능해진다.
전방 선언으로 얻을 수 있는 이점은 클래스 형식으로 cpp파일과 헤더 파일을 따로 작성할 때 분리 작성이 가능하다는 점이다.
'이론 > C++' 카테고리의 다른 글
| static과 extern (0) | 2022.03.11 |
|---|---|
| 정렬 알고리즘 중 가장 빠른것 (0) | 2022.03.11 |
| 온라인 게임에서 유저 관리하는 정렬 알고리즘 (0) | 2021.12.08 |
| Static_cast와 Dynamic_Cast (0) | 2021.12.08 |
| 컴파일 시 작동 순서 (0) | 2021.12.08 |