[C++] namespace

최윤서·2024년 6월 27일

Namespaces

namespace는 큰 프로젝트에서 이름 충돌을 방지해주는 기능을 제공한다. 코드 안의 구성 요소들은 각각 다른 자신만의 이름을 가지고 있어야 한다.

int main(void){
	int x =0;
    int x =1;
}

만약 이와 같이 코드를 작성하면 컴파일 에러가 발생할 것이다. 그러나 namespace를 사용하면 같은 이름을 가진 변수가 서로 다른 값을 가지고 있을 수 있도록 해준다.

namespace first{
	int x = 1;
}

namespace second{
	int x = 2;
}

int main (){
	int x = 0;
    cout<< x;
}

위의 경우 main에서 x를 출력했기 때문에 0이 출력된다.

namespace first{
	int x = 1;
}

namespace second{
	int x = 2;
}

int main (){
	int x = 0;
    cout<< first::x;
}

그러나 x 앞에 first::를 붙여주면 namespace first에 있던 x가 출력되어 1이 나온다 '::'는 first namespace의 x를 참고하겠다는 의미이다.

보통 코테를 풀 때 시작 전에

using namespace std;

를 작성하고 시작하는데, 그 이유는 미리 std를 참조한다고 컴퓨터에게 알려주어서 string, cout 등 앞에 std를 참조한다는 것을 적어주지 않아도 되기 때문이다.

따라서 namespace를 이용하는 이유는 똑같은 이름의 entity가 있어도 서로 다름을 확인하고 구분해주기 위해서이다.

profile
일 잘 하고싶은 기개디자이너

0개의 댓글