개인 재정 C ++로 나만의 UDL을 생성하기

C ++로 나만의 UDL을 생성하기

차례:

비디오: [전체 다시보기] 나만의 첫 번째 C++ 애플리케이션 완성하기 with C++빌더 2024

비디오: [전체 다시보기] 나만의 첫 번째 C++ 애플리케이션 완성하기 with C++빌더 2024
Anonim

표준 라이브러리와 내장 기능 C ++에서는 재미있는 리터럴 배열을 제공합니다. 그러나 리터럴의 진정한 가치는 자신을 만들 때 더욱 분명 해집니다.

UDL (User-Defined Literals)을 사용하여 여러 가지 요구 사항을 해결할 수 있지만 일반적인 코딩 문제없이 데이터 변환을 지원하고 사용자 정의 유형을보다 쉽게 ​​사용할 수 있으며 원하는 부작용을 얻는 것이 일반적입니다.

내장 또는 표준 라이브러리 리터럴은 접두사 및 접미어 형식으로 제공되지만 자체 리터럴을 정의 할 때만 접미사 형식을 만들 수 있습니다. 또한 접미사는 밑줄로 시작해야합니다. 밑줄은 기존 접미어와의 충돌을 방지하고 다른 개발자가 리터럴이 사용자 정의 (비표준) 형식임을 알도록 돕는 데 도움이됩니다.

변환 UDL 개발

UDL 내에 변환을 캡슐화 할 수 있습니다. 이러한 UDL을 작성한 후에해야 할 일은 원하는 결과를 얻기 위해 상수를 정의 할 때 적절한 접미사를 제공하는 것입니다. CustomUDL01 예제는 반경 입력을 상수의 원 영역으로 변경하는 변환을 정의하는 기술을 보여줍니다.

#include using namespace std; constexpr long double 연산자 "_circ (긴 이중 반지름) {반환 반지름 * 반지름 * 3. 141592;} int main () {double x = 5. 0_circ; cout <<"원의 영역은 "<< x << endl; return 0;}

UDL을 생성하기 위해 예제에서는 long double의 반환 값과 long double의 입력 값 인 radius를 사용하는 constexpr을 사용합니다. 원의 면적을 계산하는 방정식 이 예제에서는 constexpr의 일부로 올바른 계산을 수행합니다.

사용자 정의 UDL을 만들 때마다 컴파일러는 변환을 위해 가장 큰 유형을 사용해야합니다. 즉, 부동 소수점 리터럴에 긴 double을 사용해야하고 정수 리터럴에 unsigned long long을 사용해야합니다. 나중에 더 작은 유형을 사용하도록 선택하더라도 예를 들어 x를 double로 선언하면 리터럴 자체에서 가능한 가장 큰 유형을 사용해야합니다.

새 유형의 UDL을 선언하려면 예제에서 x를 생성하고 _circ 접미사를 사용합니다. 결과는 화면에 나타납니다. 이 예제를 실행하면 다음과 같이 올바른 값이 x에 위치하게됩니다.

원의 면적은 78입니다. 5398

사용자 정의 유형 UDL 개발

만남은 이해하기 어렵고 이해하기 어려운 맞춤 유형에 의존합니다.코드를 단순화하기 위해 UDL을 생성하면 더 명확 해지고 오류 가능성이 줄어 듭니다. CustomUDL02 예제에는 UDL을 작성하는 데 사용되는 사용자 정의 유형, 연산자 및 UDL을 사용하여 리터럴을 정의하는 방법이 표시됩니다.

#include using namespace std; struct MyType {MyType (double input): 값 (입력) {} double 값;}; {UDLType = 145. 6_mytype; cout << ulType; value << endl; return 0;}

이렇게하려면 다음을 수행하십시오. 기법을 사용하려면 유형을 구성하는 데 필요한 입력 수를 허용하는 유형의 생성자를 작성해야합니다. 최소한 생성자는 하나의 유형을 허용해야하며 그렇지 않으면 사용자가 입력 한 값이 손실됩니다.

사용자 정의 유형은 연산자에서 요구하는 것과 같은 크기의 데이터 형식을 지원하지 않지만 같은 종류 여야합니다. 예를 들어, long double을 int로 변환 할 수 없습니다.

이 예제를 실행하면 출력이 표시됩니다 값은 사용자 정의 유형에 입력 한 값인 145.6입니다.이 방법을 사용하면 상당히 복잡한 설정을 처리 할 수 ​​있습니다. 사용자 정의 유형의 사용자는 명확한 코드 작성 기능을 사용하여 쉽게 이해하고 해석 할 수 있습니다. 기본 유형은 복잡합니다.

부작용으로 맞춤 UDL 사용

가장 흥미로운 요소 중 하나입니다. UDL의 목적은

부작용

(응용 프로그램을 더 짧고 효율적으로 만들거나 유연성을 높이기 위해 평소 또는 일반 작업 이외의 작업)을 만드는 것입니다. 리터럴을 정의한 결과로 발생하는 특정 작업을 정의하려고합니다. 당신이 얻는 것은 여전히 ​​문자 적이지만, 나중에 사용할 값을 반드시 의미하지는 않는 문자 그대로입니다. CustomUDL03 예제는 비 전통적 용도 중 하나를 보여줍니다. #include using namespace std; int main () {10_countdown; return 0;}

void 연산자 "_countdown (unsigned long long 값) {for (int i = 값; i> = 0; i--) _countdown 연산자는 일반적으로 값과 연결되는 것에 연결되지 않으며 실제로 값을 반환하지는 않습니다. 대신에 얻은 결과는 부작용입니다.이 예제를 실행하면 이 출력을보십시오.

10 9 8 7 6 5 4 3 2 1 0

컴파일러가 10_countdown을 루프의 각 반복마다 하나씩 개별 cout 문으로 대체했습니다. 10과 0 사이의 값을 역순으로 출력하는 11 개의 cout 문 부작용 UDL은 반복적 인 작업을 간소화하여 코드를 작성하는 데 유용한 모든 가능성을 열어줍니다.

C ++로 나만의 UDL을 생성하기

편집자의 선택

왜 IOS 응용 프로그램을 개발합니까? - 인형

왜 IOS 응용 프로그램을 개발합니까? - 인형

IOS 앱을 개발해야하는 이유는 무엇입니까? 넌 할 수 있으니까. 왜냐하면 그들은 재미 있기 때문입니다. 그리고 시간이 왔기 때문에. iOS 앱은 계속해서 파열되고 있으며, 많은 개발자들이이 앱을 성공적으로 사용하고 있습니다. iOS 앱을 개발하는 것은 시간 투자가 거의없이 몇 년 동안 자신의 경력에서 가장 재미있을 수 있습니다.

Windows Phone 7 애플리케이션 개발 Dummies 치트 시트 - 인형

Windows Phone 7 애플리케이션 개발 Dummies 치트 시트 - 인형

Windows Phone 7에서 실행할 응용 프로그램에 대한 새로운 아이디어는 Microsoft 웹 사이트에서 무료 Windows Phone Developer Tools를 다운로드하여 시작하십시오. 이 프로세스는 다운로드를 시작하기 전에 PC에서 가지고있는 것을 살펴 봅니다. 이미 더 나은 버전이있는 경우를 대비하여 ...

Android 용으로 개발해야하는 이유는 무엇입니까? - 인형

Android 용으로 개발해야하는 이유는 무엇입니까? - 인형

진짜 질문은 "안드로이드를 개발하지 않겠습니까? "전 세계 수백만 명의 사용자가 앱을 사용할 수있게하려는 경우 또는 작성 및 테스트를 마친 후 앱을 게시하려는 경우 또는 개방형 플랫폼에서 개발하려는 경우 답변을 얻을 수 있습니다. 그러나 당신이 ...

편집자의 선택

TestDriveController를 가지고 나면 iOS 앱 - 더미에 액션을 추가하는 방법

TestDriveController를 가지고 나면 iOS 앱 - 더미에 액션을 추가하는 방법

IOS 앱에 표시되는 인터페이스는 Assistant Editor에서 자동으로 표시하거나 점프 바를 사용하여 탐색 할 수 있으므로 작업을 작성하는 실제 비즈니스는 매우 간단합니다. Interface Builder 편집기에서 관심있는 요소 (Test ...

편집자의 선택

Word 2010에서 테마를 수정하거나 만드는 방법 - dummy

Word 2010에서 테마를 수정하거나 만드는 방법 - dummy

Word 2010에서는 허용되지 않습니다. 자신 만의 테마를 처음부터 만들 수 있지만 기존 테마를 수정하여 나만의 맞춤 테마를 만들 수 있습니다. 기존 테마 색 및 글꼴을 수정하여 시작하십시오. 사용자 정의 색 테마를 작성하려면 다음을 수행하십시오. 색상 → 새 테마 색 작성을 선택하십시오. 새 테마 색 만들기 대화 상자를 사용하여 선택하고 ...

Word 2016에서 표 셀을 병합하는 방법 -

Word 2016에서 표 셀을 병합하는 방법 -

두 개의 셀을 결합하는 완전히 합리적인 방법 Word 2016 표를 하나 또는 두 개의 셀로 나눠서 표 그리기 도구를 사용하는 것입니다. 천국은 다른 방식으로 세포를 합병하거나 쪼개기로 결심한다면 자비를 베푸십시오. 두 개의 셀을 결합하려면 줄을 지우십시오.

Word 2007에서 기존 템플릿을 수정하는 방법 - 인형

Word 2007에서 기존 템플릿을 수정하는 방법 - 인형

두 가지 방법 : 템플릿에서 직접 변경하거나 템플릿을 기반으로하는 문서를 변경하여 간접적으로 수정할 수 있습니다. 두 번째 방법은 스타일 변경과 같은 템플릿 변경 만 적용합니다. 기존 Word 수정 ...