(C++) 1.11 Namespace란?

이준우·2021년 10월 5일
0

Namespace에 대해 이해해보도록 하장

우선 우리가 지금까지 썻던 using namespace std;를 떠올려보자 무슨 역할을 했었는가?

#include <iostream>

using namespace std;

int main()
{
	std::cout << "Hello" << endl;
	cout << "Hello" << endl;
	
	return 0;
}

이 간단한 코드는 동일한 출력을 낸다. 이는 using namespace std;를 통해 std:: 사용없이 편하게 Code를 짤 수 있게 해준다.

사용자가 namespace를 정의하여 사용하기도 하는데 다음 코드를 봐보자.

#include <iostream>

namespace MySpace1
{
	int doSomething(int a, int b)
	{
		return a + b;
	}
}
int doSomething(int a, int b)
{
	return a * b;
}

using namespace std;

int main()
{
	
	cout << MySpace1::doSomething(3, 4) << endl;
	cout << doSomething(3, 4) << endl;

	return 0;
}

output  =  7 , 12를 출력한다.

namespace의 name을 MySpace1으로 지음으로써 using namespace MySpace1;와 같이 사용할 수 있다. 혹은 MySpace1::doSomething()을 사용하여 쓸 수도 있다.

만약 이런 경우라면 어떻게 될까?
왜 씨뻘건 줄이 그어져 있을까? 그건 compiler가 어떤 doSomething()을 실행해야 하는지 모른다는 것이다. main()에 있는 doSomething()은 MySpace1에 있는 doSomething()도 사용할 수 있고, 함수인 doSomething()도 사용할 수 있으므로 error가 나는 것이다. 앞에서 배웠던 똑같은 함수 이름이 있을 경우 에러가 나는 것과 비슷한 상황이다.

따라서 User는 이러한 상황에 빠지지 않도록 조심하여 코드를 짜도록 하여야 한다.

profile
꿈꾸는 CV

0개의 댓글