Notice
Recent Posts
Recent Comments
공부중
[C++] 함수 오버로딩에서 적절한 파라미터를 못찾는다면? 본문
반응형
어디 모 회사의 테스트를 봤는데 매우매우 아리까리할수 있는문제들이 많이 나와서 좀 몇개 정리해보려고 한다.
문제는 다음과 같다.
#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) 로 해놓고 나온 결과이다.
만약 오버로딩이 안되어있다면 형변환이 되어서 자동으로 호출이 되었을것이다.
반응형
'Programing > C, C++' 카테고리의 다른 글
[C++] do while 문에서의 continue??? (0) | 2018.11.04 |
---|---|
[C++] 상속관계에서의 생성자 소멸자 호출 (0) | 2018.11.04 |
[C++]스마트포인터(Smartpointer) - shared_ptr 메모리 누수(memory leak)에 관련해서 (0) | 2018.05.31 |
[C++]스마트포인터(Smartpointer) - shared_ptr (0) | 2018.05.30 |
[C++]스마트포인터(Smartpointer) - unique_ptr (0) | 2018.05.25 |