본문 바로가기

:: 프로그래밍 ::/수업 내용

2024.02.29 C++) 템플릿

템플릿

 

코딩하다 보면 써야할 함수 내용은 같은데, 파라미터와 반환타입을 다르게 해주어야 해서 같은 내용을 오버로딩을 하는 경우가 생길 것이다. 이러한 상황을 피하기 위해 템플릿(template)이라는 사용할 것이다.

 

int GetMax(int x, int y) {
	if (x > y) return x;
	else return y;
}

double GetMax(double x, double y) {
	if (x > y) return x;
	else return y;
}

 

 

이런 식으로 특정한 상황의 오버로딩이 생긴다면

template <typename T>
T GetMax(T x, T y) {
	if (x > y) return x;
	else return y;
}

 

 

이러한 식으로 template을 사용하는 것이다. typename T는 하나의 타입에 대응이 되기 때문에 필요한 타입이 늘어난다면 타입 개수에 맞추어 늘려줄 필요성이 있다.

 

 

template <typename T1, typename T2>
void Output2(T1 a, T2 b) {
	cout << a << " , " << b << endl;
}

 

T1과 T2의 typename이 다르게 설정되어있지만, 같은 경우에도 정상적으로 동작한다.

특히 반환값이 없는 경우, 이런 상황이 자주 발생한다.