다음을 통해 공유


네임 스페이스 (C++)

C + + 언어 단일 글로벌 네임 스페이스를 제공합니다.이 전역 이름 충돌 문제가 발생할 수 있습니다.예를 들어, 이러한 두 C++ 헤더 파일을 참조 하십시오.

char func(char);
class String { ... };

// somelib.h
class String { ... };

이러한 정의에 두 헤더 파일을 단일 프로그램에서 사용할 수 있습니다. String 는 클래스 충돌 합니다.

네임 스페이스 안에 선언 된 이름 추가 식별자에 연결 하는 선언적 영역입니다.다른 식별자의 이름을 다른 위치는 프로그램에서 선언 된 이름과 충돌 하지 가능성이 있습니다.이름이 동일한 번역 단위에서 나타나는 경우에 충돌 없이 별도 네임 스페이스에서 같은 이름을 사용 하는 것이 가능 합니다.각 이름은 별도 네임 스페이스에 표시 하는 경우 네임 스페이스 식별자 추가 하기 때문에 고유한 것입니다.예를 들면 다음과 같습니다.

namespace one {
   char func(char);
   class String { ... };
}

// somelib.h
namespace SomeLib {
   class String { ... };
}

해지기 때문에 클래스 이름이 충돌 하는 이제 one::String 및 SomeLib::String, 각각.

C + + 네임 스페이스에 대 한 복합 이름을 허용 하지 않습니다.

// pluslang_namespace.cpp
// compile with: /c
// OK
namespace a {
   namespace b {
      int i;
   }
}

// not allowed
namespace c::d {   // C2653
   int i;
}

파일 범위에서 선언 하는 모든 네임 스페이스 외부의 번역 단위 여전히 전역 네임 스페이스의 멤버입니다.

추가 정보

참고 항목

참조

선언