후행 리턴 타입

Trailing return type

컴퓨터 프로그래밍에서 서브루틴(일명 함수)은 종종 해당 호출 코드에 값을 반환함으로써 호출 코드에 계산 결과를 알립니다. 값의 데이터 유형을 함수의 반환 유형이라고 합니다.

C++ 프로그래밍 언어에서는 함수를 선언해야 합니다.C++ 함수의 반환 유형은 [1]해당 함수를 선언하는 일부로 지정됩니다.후행 반환 유형은 다른 [2][3][4]위치에 지정된다는 점을 제외하고 기존 반환 유형과 같습니다.

구문

일반 반환 유형은 함수 이름 앞에 지정됩니다.기존 C++ 코드의 예에서 반환 타입은HasMultipleItems()bool:

학급 CClass { 일반의:     부울 복수항목들();     표준::벡터< >인트> m_veci Member; };  부울 CClass:복수항목들() {     돌아가다 m_veci Member.크기() > 1; } 

다음 파라미터 목록 뒤에 후행 리턴 유형이 지정됩니다.->기호:

학급 CClass { 일반의:     자동 복수항목들() -> 부울;     표준::벡터< >인트> m_veci Member; };  자동 CClass::복수항목들() -> 부울 {     돌아가다 m_veci Member.크기() > 1; } 

다른 언어 기능과의 차이점

현대 C++에서 의 의미는auto키워드는 컨텍스트에 따라 달라집니다.

  • 변수의 정의에 사용되는 경우(예:auto x = 11;),auto키워드는 타입 추론을 나타냅니다.이에 대한 데이터 유형x초기화를 통해 추론됩니다.
  • 한편, 타입 추론은 없습니다.HasMultipleItems()예.이 예에서는,autotrailing return type이 사용되고 있기 때문에 구문 요소로 키워드를 지정합니다.

근거

의 범용 버전을 프로그래밍하는 작업을 고려합니다.int Add(const int& lhs, const int& rhs) { return lhs + rhs; }. 이 함수의 반환 유형을 올바르게 표현하면 decltype을 가진 두 개의 형식 매개 변수 이름이 사용됩니다.decltype(lhs + rhs)단, 전통적으로 반환 유형이 지정되어 있는 경우 이들 2개의 정식 파라미터는 아직 적용범위에 포함되지 않습니다.따라서 이 코드는 컴파일되지 않습니다.

// 컴파일되지 않습니다. 템플릿< >타이프네임 TL, 타이프네임 TR> 타이프 해제(lhs + rhs) 더하다(컨스턴트 TL& lhs, 컨스턴트 TR& rhs) {     돌아가다 lhs + rhs; } 

형식 파라미터는 후행 리턴 타입이 지정되어 있는 범위 내에 있습니다.

템플릿< >타이프네임 TL, 타이프네임 TR> 자동 더하다(컨스턴트 TL& lhs, 컨스턴트 TR& rhs) -> 타이프 해제(lhs + rhs) {     돌아가다 lhs + rhs; } 

「 」를 참조해 주세요.

레퍼런스

  1. ^ Stroustrup, Bjarne (2013). The C++ Programming Language (Fourth ed.). Addison-Wesley. ISBN 978-0-321-56384-2.
  2. ^ "Function declaration". cppreference.com. C++ Reference. Retrieved 1 March 2021.
  3. ^ "C++0x Suffix Return Types". cplusplus.com. The C++ Resources Network. Retrieved 1 March 2021.
  4. ^ "Functions (C++)". Microsoft C++, C, and Assembler. Microsoft Corporation. Retrieved 1 March 2021.