도서 : 초보자를 위한 C++ 프로그래밍(성안당)
지음 : 강성수 지음
- 템플릿은 사용하는 자료형에 맞도록 자료형이 바뀌므로 모든 자료형에 공통으로 사용할 수 있다.
- 템플릿은 먼저 정의만 하는 것이고, 템플릿 인자가 주어질 때 템플릿 인자를 실제 매개변수로 전달받아 그에 맞는 클래스나 함수를 선언하여 사용한다.
- 템플릿 함수는 다음과 같이 template를 붙인 후 일반 함수와 동일한 방법으로 함수를 정의한다.
- 실습 - 정수와 부동 소수점 오버로드 함수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
#include <iostream>
using namespace std;
template <class T>
T square(T x);
int main() {
double a = 6.5;
int b = 3;
cout << "double 값을 넣었을 경우 : " << square(a) << endl;
cout << "int 값을 넣었을 경우 : " << square(b) << endl;
return 0;
}
template <class T>
T square(T x) {
return x * x;
} |
cs |
- 결과
- template는 자료형을 지정하지 않은 템플릿 기능을 사용할 것이라고 알리는 것이고, 꺾쇠 <> 속의 class는 모든 자료형의 매개변수에 적용할 수 있다는 의미이다.
- int형과 double형의 함수를 따로 만들어야 했지만, template를 사용하여 하나의 함수로 정의했다.
- 모든 자료형이 아니라 하나의 자료형만 다른 형식의 함수로 만들 수도 있다. - ex)같은 swap함수 이지만 하나는 모든 타입의 단순히 값만 바꾸는 함수와 구조체의 모든 값들을 바꿔주는 함수
'C++ 개념' 카테고리의 다른 글
클래스(class) - 생성, 소멸 (0) | 2019.03.03 |
---|---|
new 연산자와 delete 연산자 (0) | 2019.03.02 |
inline 함수 (0) | 2019.03.01 |
공용체 (0) | 2019.03.01 |
포인터와 다차원 배열, 함수 (0) | 2019.02.28 |