이름 공간(namespace)
-
여러 작업자가 하나의 프로젝트 또는 하나의 공간에서 작업할 때 함수의 이름이 겹칠 수가 있는데 이럴 때 같은 함수 이름이라도 다른 공간에 할당하기 위한 방법이 바로 namespace 이다.
-
문제의 예
int function(void)
{
return 1;
}
int function(void)
{
return 2;
}
int main(void)
{
function();
return 0;
}
- function의 이름이 중복되어 문제가 발생하게 되는데 이때 namespace를 이용하면 분리해서 다른 함수로 사용 할 수 있다.
namespace A
{
int function(void) {...}
}
namespace B
{
int function(void) {...}
}
int main(void)
{
A::function();
B::function();
return 0;
}
-
여기서 사용된 :: 연산자는 **범위 지정 연산자(scope resolution operator) ** 라고 하며 namespace의 이름 공간을 지정할 때 사용한다.
-
범위 지정 연산자는 다른 용도로도 사용할 수 있는데 전역변수와 지역변수에서 함수 내에서는 지역변수가 우선 사용된다. 그러나 범위 지정 연산자를 사용하게 되면 강제로 전역변수를 지정하여 사용할 수 있다.
int a = 10;
int main(void)
{
a = 5;
::a+1;
return 0;
}
- namespace 를 지정하고 매번 사용하는 함수들마다 앞에 namespace를 적는 것이 불편할 수 있는데 사용하는 namespace를 using으로 지정하면 namespace를 지정하지 않고도 편하게 사용할 수 있다.
namespace A
{
int function(void) {...}
}
namespace B
{
int function(void) {...}
}
using namespace A;
int main(void)
{
function(); // A::function()와 동일
return 0;
}
도움이 되셨다면 더 좋은 정보 공유를 위해 광고 클릭 부탁 드립니다 :)
0 댓글