본문 바로가기

C, C++

C++/template/함수 템플릿/템플릿에 관하여

* 공부 목적의 블로그로, 틀린 부분이 있을 수 있으며 계속해서 내용을 수정하고 추가합니다.

 

- 템플릿(Template)이란?

 템플릿이란 서로 자료형이 다르지만 기능은 같은 여러 함수를 담고자 할 때 사용하는 것이다. template <class T> 와 같이 선언하며, T는 여러 자료형을 담기 위한 임의적인 자료형이다. 일반적으로 T 라고 쓴다. 

 

 

템플릿을 사용하지 않을 경우, 자료형이 다르면 같은 기능을 자료형에 따라 따로 코딩해야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 두 개의 인수를 받아서 더 작은 수를 출력하는 함수
 
int mini(int a, int b) {
    if (a > b) {
        return b;
    }
    else {
        return a;
    }
}
 
double mini(double a, double b) {
    if (a > b) {
        return b;
    }
    else {
        return a;
    }
}
 
cs

 

그러나, 템플릿을 이용할 경우, 아래와 같이 하나의 함수만 정의해서 여러 자료형을 처리할 수 있다.

1
2
3
4
template <class T> 
T muMin(T a, T b) {
    return a > b ? b : a;        // 삼항연산자를 이용해 간략하게 적은 식
}
cs

서로 다른 자료형을 처리해야 할 때는 아래 예시와 같이 템플릿을 이용하면 된다.

1
2
3
4
template <class T1, class T2>
T2 myMin(T1 a, T2 b) {
    return a > b ? b : a;
}
cs

 

 

 

출력
1
2
3
4
5
6
7
8
9
10
11
void main() {
    int a = 3, b = 4;                        // int 정수형
    printf("더 작은 수는 %d 입니다.\n", myMin(a, b));
 
double c = 3.4, d = 4.5;                        // double 실수형
    printf("더 작은 수는 %.1f 입니다.\n", myMin(c, d));
    
printf("더 작은 수는 %.1f 입니다.\n", myMin(a, d));        // a 와 d의 데이터 타입이 서로 다름. 
//class T2 를 적고 T2 myMin는 출력하는 데이터 타입과 같은 걸로 적음.
 
}
cs

'C, C++' 카테고리의 다른 글

C/ C++/ 상수/const  (0) 2020.01.14
C++/구조체  (0) 2020.01.13
C++/call by value, call by reference  (0) 2020.01.13
C++/달력 만들기 헤더 파일/  (0) 2020.01.10
C++/왕복버블정렬 알고리즘  (0) 2020.01.08