> 백엔드 개발 > C++ > 본문

템플릿 매개변수에 언제 `class`와 `typename`을 사용해야 합니까?

Barbara Streisand
풀어 주다: 2024-11-24 19:00:24
원래의
266명이 탐색했습니다.

When Should You Use `class` vs. `typename` for Template Parameters?

템플릿 매개변수에 'class'와 'typename' 중에서 선택

C에서는 함수나 클래스 템플릿을 선언할 때 다음을 사용할 수 있습니다. 템플릿을 매개변수화하려면 클래스 T 또는 유형 이름 T를 사용하세요. 이는 다음과 같은 질문을 제기합니다. 다른 형식보다 한 형식을 선호하는 강력한 이유가 있습니까?

동등성과 구문

클래스 T와 유형 이름 T는 일반적으로 a와 동일합니다. 컴파일러의 관점. 그러나 C 17부터 중첩된 템플릿 템플릿 매개변수를 지정할 때 키워드 typename을 사용하는 것이 엄격히 권장되며, 이러한 경우 클래스를 사용하라는 이전 요구 사항을 효과적으로 대체합니다.

사용 기본 설정

기본적인 동등성에도 불구하고 일부 프로그래머는 다양한 항목에 대해 일관되게 유형 이름이나 클래스를 사용하는 것을 선호합니다. 이유:

  • TypeName 기본 설정:

    • 매개변수가 유형임을 명시적으로 표시하여 명확성을 높입니다.
  • 수업 기본 설정:

    • typename 도입 이전의 레거시 코드와의 호환성을 유지합니다.
  • 이중 사용:

    • 일부 프로그래머는 템플릿 유형에 typename을 사용합니다. 및 과거 명명 규칙에 맞는 템플릿 템플릿 매개변수에 대한 클래스입니다.
  • 기본 설정 없음:

    • 기타 단순히 둘 사이에 의미 있는 차이점을 찾지 못함

역사적 배경

클래스와 유형 이름의 구분은 C 템플릿의 진화 과정에서 나타났습니다. 처음에는 클래스만 사용했지만 혼동 가능성에 대한 우려로 인해 특별히 템플릿 유형을 지정하기 위한 별도의 키워드로 typename을 만들었습니다. 그러나 이전 버전과의 호환성이 깨지는 것을 피하기 위해 클래스는 이 목적으로 계속 허용되었습니다.

결론적으로 클래스와 유형 이름은 대부분의 실용적인 목적으로 서로 바꿔 사용할 수 있지만 둘 사이의 선택은 개인 취향에 따라 결정되는 경우가 많습니다. 또는 특정 규칙을 준수합니다. 가장 최근의 C 17 개정판에서는 중첩된 템플릿 템플릿 매개변수에 대한 typename의 기본 사용법을 명확히 하여 이러한 복잡한 구성에 대해 일관되고 명확한 구문을 보장합니다.

위 내용은 템플릿 매개변수에 언제 `class`와 `typename`을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿