이름 공간(namespace)

이름공간(namespace)

main

이름 공간(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 댓글