공부중

[C++] 함수 오버로딩에서 적절한 파라미터를 못찾는다면? 본문

Programing/C, C++

[C++] 함수 오버로딩에서 적절한 파라미터를 못찾는다면?

곤란 2018. 11. 4. 14:08
반응형

어디 모 회사의 테스트를 봤는데 매우매우 아리까리할수 있는문제들이 많이 나와서 좀 몇개 정리해보려고 한다.

 

문제는 다음과 같다.

#include <iostream>

void foo(int a)
{
	std::cout << "1111";
}

void foo(unsigned int a)
{
	std::cout << "22222";
}

int main()
{
	foo(-3.7f);
	return 0;
}

 

여기서 결과는 어떻게 나오는것인가? 라는 문제였다.

 

여기서 내가 햇깔릴만한것은 C++에서 암묵적인 형변환이 되지 않을까라는 생각이 들어서 고민이 됬었다.

일단 위의 가정대로 암묵적인 형변환이 된다고 하면은 음수를 저장할 수 있는 파라미터가 int인 함수가 호출될 것이라 생각하고 출력결과는 1111 이 나올것이라 생각했는데...

 

생각을 해보니 "오버로딩을 하면 그 중에서만 찾지 않을까?"라는 생각이 들었었다... 어렴풋이 이러한 컴파일 에러를 만났었던 기억이 나기도 했고..

 

정답은 역시 컴파일 에러를 낸다는 것!

 

혹시나 해서 VC++에서의 컴파일 옵션 SDL 검사, 최적화 사용안함, 경고수준을 모든 경고 해제(/W0) 로 해놓고 나온 결과이다.


만약 오버로딩이 안되어있다면 형변환이 되어서 자동으로 호출이 되었을것이다.

반응형