우리는 여러 데이터 유형을 처리할 수 있는 함수 오버로딩 에 대해 배웠습니다. 비록 이름이 같지만 여전히 별도로 정의해야 합니다. 코드를 간소화하고 템플릿화할 수 있다면 좋을 것입니다. 이를 위해 C++에서는 코드 재사용성을 크게 향상시키는 함수 템플릿 메커니즘을 제공합니다.
함수 템플릿을 사용하면 여러 형식 매개변수를 지원하는 일반 함수를 생성할 수 있습니다. 키워드 템플릿을 사용하여 다음 형식으로 정의합니다.
템플릿<클래스 유형 이름 1, 클래스 유형 이름 2...> 반환 값 함수 이름(형식 매개 변수 목록 열) 템플릿 매개 변수 목록 {함수 본문}
설명하자면, 이 일반적인 형식에서 첫 번째 줄의 템플릿 <클래스 유형 이름 1, 클래스 유형 이름 2...>은 선언문 입니다. 템플릿은 템플릿 함수에 여러 유형이 있을 수 있습니다. 앞의 것들은 클래스(또는 정의할 유형 이름)를 사용합니다. 그런 다음 정의된 함수 템플릿을 따르십시오. 중간에 다른 명령문을 추가하지 마십시오. 그렇지 않으면 오류가 보고됩니다!
아래에서는 구체적인 예를 살펴보겠습니다!
#include<iostream>usingnamespacestd;template<classT1,classT2>T1add(T1x,T2y){cout<<sizeof(T1)<<,<<sizeof(T2)<<t;returnx+y;}intmain(){ cout<<add(10,20)<<endl;;cout<<add(3.14,5.98)<<endl;cout<<add('A',2)<<endl;return0;}
위는 덧셈 함수에 대한 템플릿입니다. 덧셈 함수 템플릿을 정의했고 그 안의 변수 유형이 T1과 T2로 대체된 것을 볼 수 있습니다.
메인 함수에서는 실제로 호출할 때 세 가지 다른 유형을 전달하면서 세 번 호출합니다. 템플릿 함수의 T1 및 T2 유형은 전달된 실제 유형에 따라 특정 유형으로 변경됩니다. 템플릿의 인스턴스입니다.
그런 다음 프로그램을 실행하면 매번 T1과 T2 유형이 호출되는 유형, 바이트 수, 합산 결과를 확인할 수 있습니다. 실행 효과는 다음과 같습니다.
코드를 한 줄씩 이해하고 스스로 실험을 완료할 수 있습니다.