* 공부 목적의 블로그로, 틀린 부분이 있을 수 있으며 계속해서 내용을 수정하고 추가합니다.
- 템플릿(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 |