본문 바로가기

Cpp

템플릿(template)

템플릿은 C++ 언어의 특징 중 하나인 일반화 프로그래밍이 지원하는 대표적인 기능 중 하나이다.

일반화 프로그래밍은 데이터를 중시하는 객체 지향 프로그래밍과는 달리 프로그램의 알고리즘에 중점을 둔다.

 

템플릿

템플릿은 매개변수의 타입에 따라 함수나 클래스를 생성하는 메커니즘이다.

템플릿은 타입이 매개변수에 의해 표현되므로, 매개변수화 타입이라고 불린다.

템플릿을 이용하여 타입별 함수나 클래스를 만들지 않고, 여러 타입에서 동작할 수 있는

하나의 함수 혹은 클래스를 작성 가능하다.

 

함수 템플릿

 

// 문법

template <typename 타입이름>
함수 원형
{
    // 정의
}

typename 키워드 이전에는 class 키워드를 사용하였고, 현재도 typename 과 class 를 같은 것으로 간주한다.

 

// 함수 템플릿
template <class T>
T Add(T a, T b)
{
    return a + b;
}

int main()
{
   // 함수 템플릿 사용
   cout << Add<int>(5,25); 
   cout << Add<double>(10.3,23.3);

   cout << Add(5,25);
   cout << Add(10.3,23.3);
   
    return 0;
}

위의 코드의 main() 에서

 

int Add<int>(int a, int b)

{

     return a + b;

}

함수와

double Add<double>(double a, double b)

{

     return a + b;

}

함수를 각각 만든다.

다만, 해당 타입의 함수가 만들어진 이후에는 만든 함수를 호출한다.

그리고 템플릿으로 인해 만들어지는 함수를 템플릿 함수라고 한다.

 

또한 Add(5,25); 와 Add(10.3, 23.3);

는 인자의 자료형을 참조해 컴파일러가 함수의 타입을 결정한다.

 

'Cpp' 카테고리의 다른 글

move  (0) 2024.04.02
클래스의 기본 메소드 6가지 정리  (0) 2024.04.02
콜백 함수  (0) 2023.06.19
허상 포인터(댕글링 포인터)  (0) 2023.06.19
L-value, R-value  (0) 2023.06.19