티스토리 뷰
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
- 포인터
- Override
- 다이소
- auto
- CPP
- Effective Modern C++
- Effective
- std::forward
- thread
- MOVE
- Unreal
- Overloading
- 보편참조
- detach
- std::move
- C
- forward
- 발아시기
- 보편 참조
- 람다
- C++
- async
- Perfect
- C++11
- const
- Join
- Modern
- C++14
- Future
- Forwarding
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |