본문 바로가기

C++

[C++] 네임 스페이스

namespace 이름

{

          여기에 변수나 함수를 선언한다.

}

 

네임스페이스는 명칭이 중복되는 것을 방지하기 위해 명칭이 기억되는 영역이다.

 

int i;                  // 전역 네임 스페이스 소속
namespace A {
     int i;             // A 소속
}

namespace B {
     int i;             // B 소속
}

void func()
{
     int i;
     i=1;              // 지역변수 i
     ::i=2;            // 전역 네임 스페이스의 i
     A::i=3;          // A 네임 스페이스의 i
     B::i=4;          // B 네임 스페이스의 i
}

void main()
{
     func();
}

 

네임 스페이스 작성 규칙

①네임 스페이스는 다른 네임스페이스와 변수, 함수와 다른 이름을 가져야 한다.

②네임 스페이스는 전역 영역에 선언되어야 한다.

③네임 스페이스는 중첩해서 선언할 수 있다. 

④네임 스페이스는 여러번 나누어 선언할 수 있다.

⑤다중 모듈 프로젝트에서는 헤더파일에 네임스페이스 안에 함수의 원형을 작성하고 구현 파일에 함수 본체를 작성한다.

 

using 지시자를 이용해 네임스페이스 명칭을 쓸 필요 없이 네임 스페이스 안의 변수,함수를 사용할 수 있다.

using은 지역적으로 선언할 수도 있고 특정 함수나 변수에 대해서만 선언할 수도 있다.

네임 스페이스 안의 특정 변수, 함수만 가져오는 것이 using 지시자, 네임스페이스 전체를 가져오는 것이 using선언이다.

using지시자는 네임스페이스 멤버와 겹치는 지역변수를 에러로 처리하지만, using선언은 에러로 처리하지 않기 때문에

using지시자가 더 안전하다.

 

 

namespace MRG=MyCompany::Research::GameEngine;

 

네임스페이스의 이름 자체가 길거나 위처럼 여러 단계로 중첩되어 코드가 너무 길때 네임스페이스의 별명을 지을 수 있다.

 

'C++' 카테고리의 다른 글

[C++] 함수 객체  (0) 2022.01.10
[C++] auto_ptr  (0) 2022.01.09
[C++] 멤버 포인터 변수, 연산자  (0) 2022.01.07
[C++] 캐스트 연산자 (static, dynamic, const, reinterpret)  (0) 2022.01.07
[C++] RTTI  (0) 2022.01.07