가티있는블로그

[C++] namespace

2021. 7. 19. 16:05 | 프로그래밍/C++

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