2014-06-14 3 views
2

나는 C++로 템플릿을 배우려고하고 있는데, 나는 그 답을 찾을 수 없다는 의심의 여지가있다. 이것이 적절한 질문이 아니라면 미리 죄송합니다.C++ 템플릿 역학

나는 다음과 같은 코드가있는 경우 : 다음

template< class T > 
T func(T a, T b) 
{ 
    return a + b; 
} 

과 :

int number = func(2, 3); 
단순히 5로 설정하거나 기능

int func(int a, int b) 
{ 
    return a + b; 
} 

가 생성됩니다

윌 번호?

특정 문자열이 파일에 있는지 확인하는 템플릿을 만들 수 있는지 알아야합니다.

+0

함수 템플릿은 함수를 스탬프 처리하는 데 사용됩니다. – chris

+5

귀하의 질문은 정말로 "... or both?"로 끝나야합니까? –

+0

코드에 어떤 차이가있을 수 있습니까? –

답변

6

모두 (: 코드 :

int number = func(2, 3); 

가 INT 유형에 대한 템플릿 함수를 인스턴스화하지만 컴파일러 (컴파일러 옵션에 따라 수)는 실제로 그것을 최적화 단지에 :

int number = 5; 
+0

답장을 보내 주셔서 감사합니다. exacly 내가 템플릿으로 무엇을 할 수 있는지 알고 싶습니다. 템플릿을 사용하는 것이 실제로 배우는 것보다 어렵다는 것을 알았습니다. – BisaZ

+1

다른 코드에 대해 동일한 코드를 작성했으면 코드를 템플릿으로 변환 할 수있는 좋은 방법입니다. – JarkkoL

+0

@BisaZ이 질문을 "정확함"으로 표시 하시겠습니까? :) 이것은 사람들에게 이것이 해결되었다는 것을 알리게합니다. –

1

함수

int func(int a, int b) 
{ 
    return a + b; 
} 

에 해당합니다 (물론, opti 밖으로 mized). 이를 확인하려면 다음을 시도하십시오.

int (*func_int)(int, int) = func<int>; // pointer to instantiated function 
int number = func_int(2, 3); // sets number to 5