2015년 3월 26일 목요일

[C++] Overloading


컴파일러가 overloading 된 함수를 찾는 순서

1. 완전 일치(exact match)
타입이 완벽하게 일치된 타입을 선택한다.(가벼운 형 변환 가능)
가벼운 형 변환이란, int arr[10] -> int * , void* -> char* 의 casting을 말한다.

2. 승격(promotion)
데이터의 손실이 없는 방향으로 타입을 형 변환한다.

3. 기본 변환(standard conversion)
기본 타입에 한해 데이터의 손실이 발생하더라도 형 변환한다.

4. 사용자 정의 변환(user define conversion)
1, 2, 3 번 function에 matching 되지 않는다면, 컴파일러는 최종적으로 가변인자를 가지는 함수를 호출한다.

댓글 없음:

댓글 쓰기

[C++] meta programing

재귀 호출에 관해 template meta programming 을 적용한 예제를 살펴보자. #include using namespace std; int fact(int n){ if(n factorial 연산을 하는 일반적인 재귀 호출 함...