본문 바로가기

Program Languege/C/C++

템플릿 - 4

템플릿 - 4 함수의 호출 우선 순위 

 

 

템플릿 함수와 일반 함수,특수화 템플릿 함수가 있을 때 호출 우선 순위를 알아보도록 하겠다.

 

 

 

 

 

위와 같은 예제에서 실행을 해보면 다음과 같은 결과가 나온다.

 

 

 

 

 

첫번째 int형에 대해서는 특수화, 일반, 템플릿 함수중에서 일반 사용자 정의 함수가 호출 되었다.

 

두번째 char*형에 대해서는 특수화 템플릿 함수가 호출되었다.

 

그뒤에 형변환이나 일반 정수에 의한 호출에서도 사용자 정의 함수가 호출 되었다.

 

마지막 실수형에 대해서는 템플릿 함수가 호출되었다.

 

이 결과를 가지고 유추해보면 가장 먼저 일반 사용자 정의 함수가 호출 되는 것을 알 수 있다.

 

그럼 일반 사용자 정의 함수를 주석 처리를 하고 실행해보도록하겠다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

일반 사용자 정의 함수를 제외하면 특수화 템플릿 함수가 일반 템플릿 함수보다 우선 순위가 높은 것을 알 수 있다.

 

 

함수 호출 우선순위는

 

   일반 사용자 정의 함수 > 특수화 템플릿 함수 > 일반 템플릿 함수    순이다.

 

 

 

※ 클래스의 경우

   

   전체 특수화 템플릿 클래스 > 부분 특수화 템플릿 클래스 > 일반 템플릿 클래스   순이다.

 

 

결과적으로 좀 더 명확한 호출 순으로 호출한다고 생각하면 되겠다.

 

- 출처 : 윤성우 열혈 C++ 프로그래밍

 

'Program Languege > C/C++' 카테고리의 다른 글

Console  (0) 2014.03.05
const의 선언 위치  (0) 2014.02.20
템플릿 - 3  (0) 2013.03.19
템플릿 - 2  (0) 2013.03.19
템플릿 - 1  (0) 2013.03.19