C++

[C++] Unscoped & Scoped Enumerations

yisj 2023. 11. 22. 13:37

Enum Type: 이름으로 값 구분

Enum Type의 객체는 Enum 값 중 하나만 가질 수 있다

Enum 값은 integral 타입이다.

값이 할당되지 않은 Enumerator는 자동으로 첫번째 enumerator가 0이 된다.

unscoped enum의 예)

enum Suit {
	Clubs, Diamonds, Hearts, Spades
};

Suit suit = Clubs;

enum Suit {
	Clubs = 1, Diamonds = 2, Hearts = 4, Spades = 8
};

 

Scoped Enumeration은 unscoped Enumeration과 비슷하지만 다음 점이 다르다:
 - 모든 enumerator가 자기 자신 스코프에 있어야 한다
 - integral type이 값으로 사용된다
 - 변환이 더 엄격하다. 타입 안전하다.

class 또는 struct 키워드가 enum 다음에 붙으면, 그 enumeration은 scoped enumeration이 된다.
범위 해소 연산자(scope resolution operator) :: 가 enumerator의 접근에 사용된다.

일반적으로 scoped enumeration이 unscoped enumeration 보다 선호된다.

enum struct Season {
	spring, summer, fall, winter
};

enum struct Suit : unsigend char {
	clubs, diamonds, hearts, spades
};

Season season = Season::summer;
Suit suit = Suit::spades;

'C++' 카테고리의 다른 글

[C++] 참조  (1) 2023.11.22
[C++] 포인터  (2) 2023.11.22
[C++] 선언과 정의  (1) 2023.11.22
[C++] g++ 사용법 및 g++ 옵션들  (1) 2023.11.22
Windows에 gcc 설치하기  (0) 2023.11.08