클래스 템플릿 예제

인스턴스화 시점에서 클래스 템플릿이 선언되었지만 정의되지 않은 경우 인스턴스화는 불완전한 클래스 형식을 생성합니다. 템플릿 전문화 는 우리가 특정 데이터 형식에 대한 다른 코드를 가질 수 있습니다. 자세한 내용은 템플릿 전문화 를 참조하십시오. 이 Foo에서 멤버 데이터는 정확히 T 형식입니다. 당신은 foo를 인스턴스화 할 수 있습니다 int 또는 더블. 당신은 당신의 자신의 클래스 및 / 또는 구조와 Foo를 인스턴스화 할 수 있습니다. T가 수락할 내용에는 제한이 없습니다. T가 허용하는 것을 제한하는 방법이 있지만 이러한 기술은 고급 장을 위해 예약되어 있습니다. 이 모든 것은 위의 Foo의 법적 인스턴스입니다. 템플릿 인수의 이름은 거의 모든 것이 될 수 있으며 템플릿 인수의 수가 있을 수 있습니다. 수천 개의 템플릿 인수가 있는 클래스 템플릿에는 유용성이 제한되어 있습니다. 일반적으로 코드를 작성할 때 콘크리트에서 추상으로 선행하는 것이 가장 쉽습니다.

따라서 특정 데이터 형식에 대한 클래스를 작성한 다음 템플릿-일반- 클래스로 진행하는 것이 더 쉽습니다. 그 간결함은 재치의 영혼, 이 예는 간단하고 따라서 거의 실용적인 응용 프로그램의 것입니다. C++는 템플릿을 지원하는 두 개의 새 키워드인 `템플릿`과 `유형 이름`을 추가합니다. 두 번째 키워드는 항상 `클래스`라는 키워드로 대체할 수 있습니다. 명시적 인스턴스화 정의는 참조하는 클래스, 구조체 또는 공용 구조체의 인스턴스화를 강제로 합니다. 템플릿 정의 후 아무 곳이나 프로그램에 표시될 수 있으며 지정된 인수 목록의 경우 전체 프로그램에서 한 번만 표시될 수 있습니다. 함수 템플릿, 변수 템플릿, 멤버 함수 또는 클래스 템플릿의 정적 데이터 멤버 또는 멤버 함수 템플릿을 명시적으로 인스턴스화할 때 선언만 표시되어야 합니다. 동일한 템플릿 인수가 있는 명시적 특수화가 이전에 나타나지 않는 한 전체 정의는 클래스 템플릿, 클래스 템플릿의 멤버 클래스 또는 멤버 클래스 템플릿의 명시적 인스턴스화 앞에 나타나야 합니다. 템플릿 클래스를 선언하기 위한 기본 구문은 다음과 같습니다: C++ 클래스 템플릿은 템플릿 키워드와 허용할 수 있는 여러 인수로 시작합니다. C++의 클래스 템플릿의 정의입니다.

컴파일러는 FooBar 및 FooBar 두 가지 유형으로 만 봅니다. 유일한 일반적인 것은 이름입니다. 컴파일러는 템플릿 조회 프로세스에서 가장 구체적인 일치 를 찾습니다. FooBar 정확히 일치하 고 선택 됩니다. 이는 클래스 템플릿의 멤버에 적용됩니다: 멤버가 프로그램에서 사용되지 않는 한 인스턴스화되지 않으며 정의가 필요하지 않습니다. 클래스 템플릿 전문화는 클래스 템플릿의 전문화입니다. 표준 라이브러리의 주목할 만한 예는 배열 클래스입니다. std::배열은 크기 N이 있는 T 형식의 컴파일 시간 배열입니다. 스택에 배열을 할당하고 거리 를 지원합니다. 일반 C 배열보다 더 강력하게 입력되며 크기는 컴파일 시간 상수입니다.

This entry was posted in Uncategorized. Bookmark the permalink.

Comments are closed.