C++ 프로그래밍을 하다 보면 변수의 type 에 따라 함수를 여러 개 작성해야 되는 경우가 많이 있다.
다음과 같이 x3 을 계산을 하는 myfunc() 함수를 가정 해 보자.
위 식에서 x 라는 변수가 int, double 인 경우에 대해 함수를 작성 하면 아래와 같이 될 것이다.
- x 가 integer 인 경우
int myfunc(int x)
{
int t0;
t0 = x*x*x;
return t0;
}
- x 가 double 인 경우
double myfunc(double x)
{
double t0;
t0 = x*x*x;
return t0;
}
함수는 오버로딩이 되므로 위와 같이 두 개의 함수를 지정해 놓으면 x 가 int 인 경우나 double 인 경우는 함수가 정상적으로 call 이 되고 동작을 하게 될 것이다.
그런데 저런 똑 같은 함수를 float 와 같은 다른 형태의 변수에 대해서도 써야 할 때가 있다.
이런 경우는 물론 그냥 float 형태로 또 써주면 되긴 할 것이다.
하지만 이러한 코딩 방식은 너무나 비생산 적이다.
이런 경우 template 을 알고 있으면 굉장히 편리 하다.
다음과 같이 template 의 형태로 함수를 작성해 보자.
template<typename T>
T myfunc(T x)
{
T t0;
t0 = x*x*x;
return t0;
}
위 코드에서 double , int 등으로 작성되었던 부분을 T 라는 타입으로 설정 해주고, 그 위에 T 라는 type 을 갖는 template 이다 라고 선언해 준 것 뿐이다.
이렇게 헤더 파일에 작성을 하면
그 myfunc() 라는 함수는 x 의 타입에 상관없이 이용할 수 있는 함수가 되는 것이다.
template 을 이용하면서 주의 할 점은 꼭 헤더 파일에 놓여야 한다는 것이다.
template 으로 작성된 함수는 컴파일시에 코드가 만들어 진다. 따라서 컴파일 속도가 약간 느려질 수는 있지만 그 영향은 거의 미미하다.
template 을 사용하여 지루하기만 했던 C++ 코딩에 날개를 달아보자.
'컴퓨터일반' 카테고리의 다른 글
네이버 가계부 업데이트-사용처/사용내역 자동 분류 (0) | 2011.05.26 |
---|---|
MS word 자동 고침 (0) | 2011.05.05 |
NexusFile 을 이용한 파일 이름 일괄 변경 (2) | 2011.03.26 |
Programming language 인기도 (0) | 2011.03.07 |
블로그 API 이미지 업로드 안될 때 (2) | 2011.03.05 |
비트 토렌트 다운 및 이용 방법 (6) | 2011.03.02 |
NATE 메일 IMAP/POP3 설정 (0) | 2011.02.28 |
Visual studio 6.0 add to path 가 안될때 (0) | 2010.06.18 |
댓글