본문으로 바로가기

namespace

category 개발언어/c++ 2016. 7. 18. 02:38

 

name space사용 목적

Program 규모가 커지게 되면 동일한 이름의 클래스 와 함수 들이 중복되어 사용되는 경우가 발생하는데,

이를 피하기 위해 구별되는 이름을 부여하여 충돌은 쉽게 피할 수 있도록 하는 기능이 namespace 이다.

   

선언 방법

namespace std

{

namespace 상의 전역변수

namespace 상의 전역함수

일반 class 선언

}

   

사용 방법

namespace 내에서는 그냥 일반적인 방법으로 함수나 변수를 사용하면 된다.

namespace를 벋어나는 경우는 다른 namespace 상의 함수나 변수는 std::function() 형태로 사용하면 된다.

또는 그 namespace상에서는 많은 부분 다른 namespace상의 변수나 함수를 호출할 경우

std::function() 같이 std:: 를 사용하지 않아도 된다.

using namespace std;

using 이라는 namespace 이용은 하나가 아니라 여러 개가 있을 수 있다. 단 그들 안에 같은 이름의 함수, 변수는 없어야 한다.

   

namespace의 범위가 클 경우

여러 file에 걸쳐 namespace 가 존재할 경우 namespace를 지정할 때 같은 이름으로 지정해주면 모두 같은 namespace안에 들어간다.

   

이름 없는 namespace

namespace {

int a;

경우는 namespace에 소속된 그룹에 접근을 차단하는 결과를 나타낸다.

stratic을 이용하여 전역변수나 함수를 선언하는 것과 동일하므로 접근할 수 없게 된다.

   

nested snamespace

namespace Data

{

namespace List

{

void function();

}

..

}

   

namespace 안에 또 다른 namespace가 추가된 경우 이를 호출하려면 Data::List::function() 와 같이 사용한다.

   

namespace에 별명 붙이기

namespace Rorate_with_small_image

{

}

//다른 이름으로 치환하기

namespace rs = Rotate_with_small_image;

   

rs::iamge();