내배캠/C++
템플릿 함수
동그래님
2024. 12. 24. 20:38
매개변수의 타입이 다르거나 개수가 다르다면 함수의 이름이 같아도 C++에서는 함수 오버로딩으로 사용할 수 있다.
더보기
#include <iostream>
using namespace std;
int add(int x, int y)
{
return x + y;
}
double add(double x, double y)
{
return x + y;
}
string add(string x, string y)
{
return x + y;
}
int main()
{
cout << add(3, 5) << endl;
cout << add(2.5, 4.3) << endl;
cout << add("Hello ", "world!") << endl;
return 0;
}
하지만 이렇게 되면 각 타입에 맞는, 많은 함수를 만들어야해서 시간적 비용이 발생한다.
그래서 템플릿 함수를 만들어서 사용하면 일반화된 코드를 작성할 수 있게 된다.
template <typename T>
T add(T x, T y)
{
return x + y;
}
int main() {
// 정수 더하기
cout << "3 + 5 = " << add(3, 5) << endl;
// 실수 더하기
cout << "2.5 + 4.3 = " << add(2.5, 4.3) << endl;
// 문자열 합치기
cout << "\"Hello, \" + \"World!\" = " << add(string("Hello, "), string("World!")) << endl;
return 0;
}
- 함수의 데이터 타입을 고정하지 않고, 호출 시점에 전달된 인수에 따라 데이터 타입을 결정할 수 있다.
- 재사용성을 높이고 중복된 코드를 줄일 수 있다.
- 컴파일 타임에 타입 검사를 수행하므로, 타입 안정성을 보장한다.