티스토리 뷰

C++

[C++] namespace 란 무엇인가?

pppgod 2019. 4. 21. 20:29

Microsoft에서는 namespace 를 다음과 같이 정의한다.

네임스페이스는 내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역입니다.

책에서도 위와 같이 정의하는 경우가 많은데 글은 이해가 되나 실제 코드를 읽을 때는 잘 이해가 되지 않는다. C++을 처음 접하게 되면 using namespace std 를 접하게 될 것이다. 하나하나 살펴보도록 하자.

 

사용 방법

선언

namespace 를 선언하는 방법은 다음과 같다.

namespace std
{
   ...
}

 위의 코드의 의미는 std라는 namespace를 생성하겠다는 의미이다. 우리가 자주 사용하는 using namespace std 위와 같이 선언되어 있을것이다. 그리고 블럭 안에 클래스나 함수, 변수 등이 선언하면 된다. 한가지 주의해야 할 점이 있다면 namespace가 중복되어서는 안된다는 것이다. 또한 namespace 를 중첩해서 사용 할 수 있다.

namespace first
{
	namespace second
    {
        ...
    }
}

사용

 namespace 를 사용하는 것은 우리가 이미 해왔다.

using namespace std;

 말 그대로 std라는 이름의 namespace 를 사용하겠다는(using) 의미이다. 만약 using namespace std 를 사용하지 않고 사용하고 싶다면 다음과 같이 사용 할 수 있다.

std::cout << "Hello World!" << endl;

 

namespace를 사용하는 이유

namespace를 사용하는 이유는 간단하다. 같은 이름의 함수나 변수를 선언한다고 하자. 그렇다면 컴파일러는 분명 중복으로 인한 오류를 내보내게 되어있다. 예를 들어 C++ STL에는 vector라는 클래스가 선언되어 있다. 우리가 수학시간에 배우는 기하와 벡터의 벡터 클래스를 선언하고 싶더라도 클래스명 중복으로 인하여 vector라는 이름으로 선언 할 수 없다. 하지만 namespace를 이용하게 되면 vector라는 클래스 선언이 가능하다.

namespace graphics
{
	class vector 
    {
    	...
    };
 }

위와 같은 방법으로 선언하게 되면 문제가 없을 것이다.

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

[C++] call by reference  (0) 2019.07.05
[C++] struct와 class  (0) 2019.06.26
[C++] move 함수 이해하기 - 기초  (0) 2019.06.24
[C++] 헷갈리기 쉬운 포인터 변수의 소멸조건  (0) 2019.04.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함