728x90
[C++] template(템플릿) 에 관하여 1 (템플릿이란, 함수 템플릿) (tistory.com)
템플릿: 함수나 클래스를 개별적으로 다시 작성하지 않아도 여러 자료형으로 사용할 수 있도록 하게 만들어 놓은
int sum(int a, int b){
return a + b;
}
double sum(double a, double b){
return a + b;
}
템플릿 없을 때
template<typename T>
T sum(T a, T b){
return a + b;
}
템플릿 있을 때 - 함수를 하나로 통일 가능.
인자 2개 받을 때 두개의 타입이 다른 경우
template <class T1, class T2>
void printAll(T1 a, T2 b){
cout << "T1 : " << a << endl;
cout << "T2 : " << b << endl;
cout << "T1 + T2: " << a + b << endl;
#include<iostream>
#include<string>
using namespace std;
template <typename T>
T sum(T a, T b){
return a + b;
}
int main(void) {
int a=1, b =2;
double d1 = 2.2;
double d2 = 3.3;
string s1 = "Show me ";
string s2 = "The Money 6";
cout << "int 합 : " << sum<int>(a, b) << endl;
cout << "double 합 : " << sum<double>(d1, d2) << endl;
cout << "string 합 : " << sum<string>(s1, s2) << endl;
return 0;
}
실제 쓸 때는 명확하게 어떤 자료형을 쓸 건지 <> 안에 표시해주는 것이 조음
장점
* 컴파일러가 컴파일 도중 각 템플릿 인스턴스에 대한 코드를 만들어줘
컴파일 속도는 느리지만 런타임 속도는 빠를 수 있음
* 중복코드를 줄여주기 좋음
단점
* 컴파일 타임이 비교적 느리고, 템플릿 매개변수를 추가할수록 더 느려짐
* 다형성으로 인해 파일이 커지면 느려질 수 있음
728x90
'CS > C++' 카테고리의 다른 글
얕은복사 / 깊은복사 (0) | 2023.12.14 |
---|---|
c++ typedef vs using 키워드 차이점 (0) | 2023.12.14 |
c++ 캐스팅 (0) | 2023.12.14 |
<algorithm> 헤더의 sort와 list.sort (0) | 2023.12.14 |
map과 unordered_map 차이 (0) | 2023.12.13 |