일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 컨디션 변수
- OS
- 스케줄링
- 타입 객체
- 쓰레드
- 자료구조
- 프로그래머스
- I/O장치
- 다이나믹 프로그래밍
- 그리디알고리즘
- 운영체제
- codility
- 디자인패턴
- directx
- 병행성 관련 오류
- DirectX12
- DirectX 12
- 알고리즘
- 병행성
- 백준
- 렌더링 파이프라인
- 영속성
- 멀티프로세서
- 멀티쓰레드
- 락
- 파일시스템 구현
- 다이나믹프로그래밍
- Direct12
- 그리디 알고리즘
- 동적계획법
Archives
- Today
- Total
기록공간
엄격한 열거 타입 본문
반응형
열거 타입은 타입 세이프하지 않다. 기본적으로 정수 타입 취급을 받기 때문에 서로 완전 별개인 열거 타입 간에도 비교 연산이 가능하다. enum class를 이용하면 이러한 문제를 해결할 수 있다. 다음은 사용 예이다.
enum class MyEnum
{
EnumValue1,
EnumValue2 = 10,
EnumValue3
};
MyEnum은 타입 세이프하기 때문에 열거값이 다른 정수 타입 변수로 자동으로 캐스팅되지않고 class 이름으로 스코프 설정을 하지 않으면 참조할 수도 없다. 다음과 같이 스코프 설정을 해야 사용 가능하다.
MyEnum value1 = MyEnum::EnumValue1
다음과 같이 일반 정수값과 MyEnum 값을 비교하는 것은 문법 위반이다.
if(MyEnum::EnumValue3 == 11) {...}
열거 타입은 기본적으로 int 타입 값과 연계되지만 enum class에서는 다음과 같이 값의 타입을 바꿀 수 있다.
enum class MyEnumLong : unsigned long
{
EnumValueLong1,
EnumValueLong2 = 10,
EnumValueLong3
};
반응형
'C++' 카테고리의 다른 글
decltype 키워드 (0) | 2020.04.03 |
---|---|
자동 함수 리턴 타입 (C++14) (0) | 2020.04.03 |
새로운 함수 정의 문법(C++11) (0) | 2020.04.03 |
std::array (0) | 2020.04.03 |
템플릿(Template) (0) | 2019.07.02 |
Comments