C++ 네임 스페이스에 대해서...

shi510의 이미지

#include <iostream>
 
int Add(int a, int b){ return a + b; }
int main()
{
	Add(1, 5);
	::Add(1, 5);
	return 0;
}

위 코드에서
::를 붙여서 함수를 콜 하는 것과
붙이지 않고 함수를 콜 하는 것의 차이는 무엇입니까?

익명 사용자의 이미지

#include <iostream>
 
int Add(int a, int b){ std::cout << "global add\n"; return a + b; }
 
namespace kldp {
    int Add(int a, int b){ std::cout << "kldp add\n"; return a + b; }
}
 
int main()
{
    using kldp::Add;
    Add(1, 5);
    ::Add(1, 5);
    return 0;
}

라고 예제코드를 수정해 보면 의미차이가 분명해 질거 같습니다

shi510의 이미지

::는 전역에 있는 것을 콜하는 것이군요...