템플릿에는 '모형자'라는 뜻이 담겨있다. 모형자는 모형을 그릴 때 사용한다. 빨간색 펜을 이용해서 모형을 그리면 빨간색 모형이 그려지고, 파란색 펜을 이용해서 모형을 그리면 파란색 모형이 그려지는 것이 모형자이다. C++의 템플릿도 이와 성격이 유사하다
함수를 대상으로 템플릿 이해하기
"모형을 만들어 낸다. 모형의 틀은 결정되어 있지만, 모형의 색은 결정되어 있지 않아서 결정해야 한다."
"함수 템플릿은 함수를 만들어 낸다. 함수의 기능은 결정되어 있지만, 자료형은 결정되어 있지 않아서 결정해야 한다."
int Add(int num1, int num2)
{
return num1+num2;
}
위 함수의 기능과 자료형은 다음과 같다.
함수의 기능 : 덧셈
대상 자료형 : int형 데이터
이러한 함수를 만들어 낼 수 있는 템플릿(모형자)는 다음과 같이 정의한다.
template <typename T>
T Add(T num1, T num2)
{
return num1+num2;
}
함수의 기능 : 덧셈
대상 자료형 : 결정되어 있지 않음
T는 자료형을 결정짓지 않겠다는 의미로 사용한 것이다. 즉, 함수를 만들어 내는 템플릿을 정의하기 위해 사용된 것 이다.
#include <iostream>
using namespace std;
template <typename T>
T Add(T num1, T num2){
return num1+num2;
}
int main(void){
cout<<Add<int>(15,20)<<endl;
cout<<Add<double>(2.9, 3.7)<<endl;
cout<<Add<int>(3.2, 3.2)<<endl;
cout<<Add<double>(3.14, 2.75)<<endl;
return 0;
}
결과
35
6.6
6
5.89
cout<<Add(15,20)<<endl;
cout<<Add(2.9, 3.7)<<endl;
cout<<Add(3.2, 3.2)<<endl;
cout<<Add(3.14, 2.75)<<endl;
이렇게 쓰면 자동으로 자료형을 판단해서 출력해준다.
'c++' 카테고리의 다른 글
[C++]가상함수(Virtual Function), 다형성(Polymorphism) (0) | 2023.06.09 |
---|---|
[C++] 객체 포인터의 참조관계 (0) | 2023.06.09 |
[C++]상속(Inheritance)의 이해 (0) | 2023.05.14 |
[C++]복사 생성자(Copy Constructor) (0) | 2023.05.05 |
[C++]연산자 오버로딩의 이해와 유형 (0) | 2023.04.30 |