@ 16. 1 ~ 17. 1/C++

Template (1) 함수 템플릿

namoeye 2013. 1. 29. 00:14

Template<typename T>

T Add(T num1, T num2)

{

return num1 + num2;

}

이런식으로..

함수 템플릿..

 

보통 Add<int>(3,5) 이런식으로

<int> -> <typename T>를 명시해주는 편이다.

cout << Add<int>(3,5) << endl;

 

이런식으로도..가능하다..

Template<typename T1, typename T2>

void ShowData(T1 num1, T2 num2)

{

cout << (T1)num1 << (T2)num2 << endl;

}

를 이런식으로.. ShowData<char, int>('c',4); 사용이 가능하다..

출력물은 c4 이렇게..나오고

 

함수 템플릿의 특수화

Template<typename T>

T Max(T a, T b)

{   

return a > b ? a : b;

}

이런 함수가 있을떄..

Max("Simple","Best");

이런것은..Best가 출력이 된다..

그래서 이것은 이것에 맞는 특수화가 필요하다는것..

저 함수 아래

Template<>

char *Max(char *a, char *b)

{   

return strlen(a) > strlen(b) ? a : b;

}

이런식으로 만들어놓으면.. char *형 템플릿이 필요하면 이것으로 사용하겠다 ..라는것

뭐..

Template<>

int Max(int a, int b)

{

return 10;

}

이런식으로 int때는 이렇게 사용하면된다고 해도된다..이것이 바로 특수화..


지금 포인터 때문에 괴리감에 빠졌다..

이해가 된줄알았는데..

전혀 이해를 못하고 있던상태..

구입해놓고 제대로 못본..처음만 보다가 오 이정도만 이해ㄷ하면 되겠지 스스로 타협..그래서 이지경이 온듯..

 


열혈강의 C 포인터

저자
공동환 지음
출판사
프리렉 | 2006-01-12 출간
카테고리
컴퓨터/IT
책소개
C언어 입문서. 이 책은 C입문자들이 어려워하는 C포인터를 중점...
가격비교

이책을 좀 봐야겠다....ㅠ