반응형
함수 template 필요성
C++에서는 C와 달리 함수 오버로딩으로
다른 인자를 가지는 동일한 함수명을 만들 수 있다.
[예제] 함수 오버로딩
int harbang(int x)
{
return x * x;
}
double harbang(double x)
{
return x * x;
}
int main()
{
harbang(3);
harbang(3.4);
}
사용자 입장에서는 하나의 함수처럼 사용할 수 있지만
제공하는 입장에서는 유사한 로직을 여러 함수에 만들어야 한다.
→ 함수 생성하는 틀
template<typename T>
T harbang(T a)
{
return a * a;
}
int main()
{
// 명시적으로 타입 전달
harbang<int>(2);
harbang<double>(2.2);
// 컴팡이러가 함수 인자로 타입 추론
harbang(3); // int 타입
harbang(2.2f); // float 타입
}
template<class T> 표기
'typename'이 아닌 'class' 라고 표기하는 경우도 많다.
template<class T>
T harbang(T a)
{
return a * a;
}
int main()
{
// 명시적으로 타입 전달
harbang<int>(2);
harbang<double>(2.2);
// 컴팡이러가 함수 인자로 타입 추론
harbang(3); // int 타입
harbang(2.2f); // float 타입
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] STL capacity와 size 함수 차이 (1) | 2025.01.13 |
---|---|
[C/C++] extern 키워드 (0) | 2025.01.12 |
[C/C++] 문자열 String (0) | 2025.01.10 |
[C++] [STL] Vector 사용 방법 (0) | 2025.01.09 |
[C++] decltype 키워드 (1) | 2025.01.02 |
댓글