본문 바로가기
프로그래밍 언어/C++

[C/C++] 함수 template

by 까망 하르방 2025. 1. 11.
반응형

함수 template 필요성

C++에서는 C와 달리 함수 오버로딩으로

다른 인자를 가지는 동일한 함수명을 만들 수 있다.

💻 함수 오버로딩(Overloading)

 

💻 함수 오버로딩(Overloading)

함수 오버로딩 (overloading) • 동일한 이름의 함수명이 여러개 중복 정의되어 있는 형태 • 함수 파라미터(parameter) 자료형 혹은 개수가 다르다. • C 언어에서는 동일한 이름의 함수 정의를 허용하

zoosso.tistory.com

 

[예제] 함수 오버로딩

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

댓글