개인 재정 C ++의 강력한 형식의 열거 형 - 인형

C ++의 강력한 형식의 열거 형 - 인형

비디오: Steam Controller 2024

비디오: Steam Controller 2024
Anonim

프로그래밍은 가독성에 관한 것입니다. 읽을 수없는 프로그램을 작성하고 유지하는 것은 어렵습니다 (실제로는 불가능합니다). 소스 코드 목록을 읽는 부분은 프로그램에 사용 된 번호가 무엇인지 나타내는 것입니다.

#define PI 3. 141592653589793

이 해결책은 개별 값으로도 괜찮지 만, C ++이 제공하는 가장 기본적인 지원은 다음과 같은 유비쿼터스 #define입니다. #define 메커니즘은 전처리 기가 컴파일러보다 먼저 실행되기 때문에 C / C ++의 일부가 아닙니다 (엄격히 말하면). 이에 대한 응답으로 C ++ 2011에서는 상수 표현식 구문을 도입했습니다.

constexpr long double PI = 3. 141592653589793;

constexpr 키워드는 C ++ 텐트에 상수를 가져옵니다. 이 PI에는 다른 C ++ 변수와 같은 실제 유형이 있습니다. C ++은 3.14159와 관련된 오류 메시지보다 PI를 사용하여 오류 메시지를 생성 할 수 있습니다. 상수 표현식은 개별 상수 값에 적합하지만 종종 다음 예제와 같이 자연 상수가 아닌 일련의 사물을 나타냅니다.

아마도이 상수는 상태를 식별하는 데 사용되어 아마도 아마도 다음과 같이 사용됩니다. 상태 객체의 배열에 대한 인덱스 또는 어딘가에있는 데이터베이스의 값.

C ++은 이러한 유형의 상수를 정의하는 메커니즘이 오랫동안 개선되어 왔습니다. 열거 형:

enum STATE {DC_OR_TERRITORY, // ALABAMA를 가져오고, // ALASKA를 가져오고, // ARKANSAS를 두 개 가져옵니다. // … 곧…};

enum 키워드는 "열거 (enumeration)"라고하는 일련의 상수를 도입합니다. 이 경우 열거 형은 STATE라는 이름을 갖습니다. 이 열거 형의 각 요소에는 0에서 시작하여 1 씩 증가하는 값이 할당되므로 DC_OR_TERRITORY는 0으로 정의되고 ALABAMA는 1로 정의됩니다. 다음과 같이 assign 문을 사용하여이 증분 시퀀싱을 재정의 할 수 있습니다.

 -

enum STATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … 등등 …};

이 버전의 STATE는 값 0이 부여 된 요소 DC를 정의합니다. 그런 다음 새로운 요소 TERRITORY도 정의합니다. 또한 값 0이 할당됩니다. ALABAMA는 이전과 마찬가지로 1을 선택합니다. 실제로, 프로그래머는 열거 형을 사용하여 다음과 같이 매우 읽기 쉬운 코드를 작성할 수 있습니다.
double taxRate (STATE s) {return taxRatesByState [s];}이 접근법의 유일한 문제점은이 열거 형 생각할 수있는 것처럼 새로운 유형을 만들지 않습니다.실제로 표준에 따르면 STATE는 int의 또 다른 이름이며 상수 ALABAMA, ALASKA 등은 모두 const int 유형입니다.

-

void fn (STATE s); void fn (int n); fn (알래스카); // invokes fn (STATE)

2011 표준을 통해 프로그래머는 enum 키워드를 사용하여 완전히 새로운 유형을 만들 수 있습니다. 새 표준 작성자는 기존 코드를 손상시키지 않으므로 표준에서는 다음 예와 같이 열거 유형을 정의하기 위해 추가 키워드를 추가해야합니다.

-

enum class STATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … 등등 …};

열거 형 클래스는 이제 다른 사용자 정의 클래스와 마찬가지로 본격적인 형식입니다. 다음 두 가지 이유로 더 이상 법적으로 적합하지 않습니다.

int s = ALASKA;

첫째, 상수 ALASKA는 STATE 네임 스페이스 내에서만 정의됩니다. 따라서 상수의 이름은 STATE:: ALASKA입니다. 둘째, 유형은 int가 아니라 STATE입니다. STATE 유형의 값을 int에 대입 할 수 없습니다.

-
상태 s = 상태:: 알래스카; 프로그래머는 상태를 int로 다시 작성할 수 있지만 명시 적으로 수행해야합니다. 암시 적 변환은 열거 클래스로 잘라 내지 않습니다.

int n = (int) STATE:: ALASKA;

이 새로운 enum 유형은 int 이외의 다른 계산 숫자 유형 중 하나를 기반으로 할 수도 있습니다.

enum class STATE: char {DC, // … 나머지 선언문은 동일합니다.

C ++의 강력한 형식의 열거 형 - 인형

편집자의 선택

Dragon Go! iPhone 및 iPad 용 앱 - 인형

Dragon Go! iPhone 및 iPad 용 앱 - 인형

Dragon Search를 사용하시는 분이라면 Dragon Go를 사용하는 것이 좋습니다! Nuance는 iPhone 3GS, iPhone 5, iPhone 4, iPod touch (3 세대), iPod touch (4 세대) 및 iPad에서 사용할 수 있도록 무료로 다운로드 할 수있는이 앱을 만들었습니다. (iOS 4.0 이상이어야합니다.) Android 기기에서도 사용할 수 있습니다. 드래곤가! ...

드래곤에서 피할 수있는 10 가지 실수 말하기 - 인형

드래곤에서 피할 수있는 10 가지 실수 말하기 - 인형

모두가 실수를 저지르고 어떤 사람들은 정말 크고 재미있게 만든다. 실수. NaturallySpeaking을 사용하여 많은 실수를 저 지르므로 때때로 수시로 일부를 만들 수도 있습니다. 내가 묻는 것은 다음과 같습니다. 내가 미리 짐작했던 10 가지 분명한 실수를하지 마십시오. 원래의 수. 창조적으로 행동하십시오. 거기서 나가서 ...

NaturallySpeaking을위한 10 가지 시간 절약 팁 - 인형

NaturallySpeaking을위한 10 가지 시간 절약 팁 - 인형

때로는 잘하고 그냥 사용하는 것의 차이 새로운 소프트웨어는 더 지혜롭고 경험 많은 스승의 충고 한 부분입니다. 누군가가 당신에게 전에 말했었 으면 좋을 10 가지가 있습니다. 대화 상자의 단축키 사용 대화 상자, 라디오 버튼, 확인란의 다양한 기능 ...

편집자의 선택

Google SketchUp 8에서 새로운 지형 모델을 만드는 법 - Google에서 모델링 할 때 인형

Google SketchUp 8에서 새로운 지형 모델을 만드는 법 - Google에서 모델링 할 때 인형

SketchUp을 사용하면 지형을 만들어야 할 수 있습니다. 건물에 대한 패치를 모델링하든 센트럴 파크를 다시 디자인하든 기존 데이터로 지형을 모델링 할 수 있습니다. 기존 데이터는 일반적으로 등고선 또는 토폴 라인 형태로 도착합니다. 지형지도에서 볼 수있는 삐걱 거리는 선을 알고 있습니다.

SketchUp에서 드레이프로 경로와 도로를 만드는 법 - 스케치 업에서 드레이프 도구

SketchUp에서 드레이프로 경로와 도로를 만드는 법 - 스케치 업에서 드레이프 도구

드레이프 도구가 작동 함 쿠키 커터와 조금 같다. 그것을 사용하여 객체의 가장자리를 직접 그 아래에있는 다른 표면으로 전송합니다. 아마도 당신은 부드럽게 경 사진 지형을 가지고 있으며, 당신은 그것에 사행 경로를 그리기를 원할 것입니다. 경로는 윤곽선을 따라야합니다.

SketchUp 모델을 3D 인쇄 용 부품으로 자르는 방법 - 인형

SketchUp 모델을 3D 인쇄 용 부품으로 자르는 방법 - 인형

SketchUp 모델 자르기 Intersect Faces 도구를 사용하여 그룹을 결합하는 것과 매우 유사합니다. 더 큰 오브젝트와 교차하여 커팅의 새 가장자리가 될 커터로 지오메트리를 사용할 것입니다. 모델이 매우 단순하고 SketchUp을 사용하는 경우 ...

편집자의 선택

Route Prefix를 사용하여 Junos - dummy에서 라우팅 필터를 생성하는 방법

Route Prefix를 사용하여 Junos - dummy에서 라우팅 필터를 생성하는 방법

라우팅 정책은 특정 경로가 라우팅 테이블에 수용되거나 일부 인접 라우터에 보급되는 것을 방지하기위한 것입니다. 경우에 따라 특정 경로 또는 경로 집합을 일치시키는 것이 유용 할 수 있습니다. 이렇게하려면 경로 필터를 사용합니다. 경로 필터는 특정 IP 주소 또는 접두어 범위에서 일치합니다. ...

Junos 라우터에서 COS의 코드 포인트 별명을 사용하는 방법 - 인형

Junos 라우터에서 COS의 코드 포인트 별명을 사용하는 방법 - 인형

전달 수업은 고통 스러울 수 있습니다. 더 좋은 방법은 코드 포인트 별칭을 사용하는 것입니다. CoS (Class of Service) 정책을 결정할 때 비트 패턴을 지정하는 대신 비트 패턴을 나타내는 별칭 이름을 정의 할 수 있습니다. 이러한 별칭을 코드 포인트 별칭이라고합니다. 간단히 말하자면 코드 포인트를 사용하십시오 ...

Junos 라우팅 정보를 요약하는 방법 - 더미

Junos 라우팅 정보를 요약하는 방법 - 더미

때때로 라우팅 정보를 간단하게 요약 할 수 있습니다 라우터. 예를 들어, 네트워크에서 OSPF를 방금 구성 했으므로 라우팅 테이블에 특정 수의 OSPF 경로가 표시 될 것으로 예상됩니다. show route summary 명령을 실행하여 모든 경로를 볼 수 있습니다 ...