본문으로 바로가기

함수 템플릿

category 개발언어/c++ 2016. 6. 13. 00:00

만약 sum이라는 함수( 변수를 더하는 ) 만든다고 치자~

하지만 더할수 있는 자료형은 int 뿐만 아니라 int float double string 등등 이라고 한다면

가장 쉽게 떠올릴수 있는것이 바로 함수오버로딩이다.

explicit int sum(int a, int b)

{

}

explicit float sum(float a, float b)

{

}

explicit double sum(double a, double b)

{

}

* explicit 키워드는 암시적인 형변환을 막아준다. ex) int a = 3.5f; // 암시적으로 3으로 짤려서 들어감.

- 암시적? 암묵적?? 용어의 차이는 따지지 않는걸로~

하지만 이렇게 되면 중복된 코드도 많이 양산하고 자료형 마다 해줘야하는 번거로움도 있다.

이럴때 함수템플릿로 만들어 쓰면 참으로 좋다.

예로써 보는게 제일 이해하기 쉽다.

ex)

template<typename T>

T sum(T a, T b)

{

T temp;

temp = a + b;

return temp;

}

하지만 아래같은 경우라면 위의 함수템플릿도 속수무책으로 당할수 밖에 없다..

struct point

{

int x, int y;

};

sum함수에 point 변수가 들어온다면 어떻게 될까? 물론 안됨...

이럴경우를 대비해 함수 템플릿 특수화라는것이 있다.

ex)

template<>

point sum<point>(point a, point b)

{

point temp;

temp.x = a.x + b.x;

temp.y = a.y + b.y;

return temp;

}

'개발언어 > c++' 카테고리의 다른 글

웹에서 다운로드  (0) 2016.06.13
클래스 템플릿  (0) 2016.06.13
스레드 종료시점 알기  (0) 2016.06.12
RaiseException,예외이벤트 발생  (0) 2016.06.12
RaiseException,예외이벤트 발생  (0) 2016.06.12