본문 바로가기
컴퓨터일반

[C++] template

by __observer__ 2011. 3. 6.
반응형

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++ 코딩에 날개를 달아보자.

 


반응형

댓글