C++ 표준의 모든 요소s는 "std"이름 공간안에 있다.
namespace에있는 요소에 접근하는 방법
1. qualified name => 가장 많이 쓰고 안전하게 사용할 수 있음
(namespace)::(function)
2. using declaration
using (namespace)::(function) // 해당 함수를 namespace에 있는 것으로 사용
3. using directive
using namespace (namespace) // namespace의 모든 요소를 사용가능
2,3번을 사용하면 이름충돌이 발생할 수 있으니 유의해서 사용해야 함
선언부와 구현부에서 유의할점
함수를 선언 파일(.h)과 구현파일(.cpp)로 분리할때,
함수의 선언부와 구현부를 모두 namespace로 묶어야한다.
<stdio.h> vs <cstdio>
<stdio.h> : printf()등의 표준함수가 global namespace 안에있다
<cstdio> : printf()등의 표준함수가 std 이름공간에 있다. 표준은 아니지만 대부분의 컴파일러는 global namespace에도 printf등의 표준함수를 제공한다.
아래와 같은 방법으로 전역공간에 있는 함수를 namespace에 포함시킬 수 있다.
void foo() {}
namespace Audio
{
using ::foo;
}
int main()
{
foo();
Audio::foo();
}
'프로그래밍 > C++' 카테고리의 다른 글
[C++] 후위 반환 타입 (0) | 2021.07.25 |
---|---|
[C++] template (0) | 2021.07.22 |
[C++] structured binding (0) | 2021.07.21 |
[C++] typedef, using (0) | 2021.07.19 |
[C++] boost 라이브러리 집중 분석 (0) | 2021.04.05 |