c++
함수 템플릿
연결리스트
2020. 8. 27. 22:36
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <iostream>
#include <string>
template <typename T>
T max(T& a, T& b) {
return a > b ? a : b;
}
int main() {
int a = 1, b = 2;
std::cout << max(a, b) << std::endl;
std::string s = "hello", t = "world";
std::cout << max(s, t) << std::endl;
}
|
cs |
위에서 정의된 템플릿 함수는 클래스 템플릿과 마찬가지로 인스턴스화 되기 전까진 컴파일 시 아무런 코드로 변환되지 않는다.
실제로 템플릿 함수가 인스턴스화 되는 부분은 max()함수가 호출되는 부분이다.
클래스를 인스턴스화 할때와는 달리 <> 가 없어도 컴파일러가 알아서 max(a, b)를 max<int>(a, b)로 인스턴스화 해준다.
템플릿으로 발생되는 오류는 프로그램이 실행되었을 때가 아니라 컴파일할떄 발생한다.
컴파일 시에 모든 템플릿을 실제 코드로 변환하여 실행하기 때문이다.