네임스페이스

네임스페이스는 같은 이름을 다른 영역으로 분리합니다

큰 프로그램에서는 함수와 타입 이름이 쉽게 충돌하므로 namespace로 소속을 드러내고 사용 범위를 조절합니다.

선언

이름 공간 만들기

관련 함수와 타입을 한 영역에 묶어 다른 라이브러리 이름과 구분합니다.

namespace math
한정

소속을 명시해 사용

std::cout처럼 접두사를 붙이면 어떤 네임스페이스의 이름인지 분명합니다.

std::name
using

짧게 쓰는 선택

자주 쓰는 이름을 가져올 수 있지만 범위가 넓으면 충돌 가능성이 커집니다.

using std::cout
중첩

계층으로 의미 표현

프로젝트, 모듈, 세부 기능을 단계적으로 나누어 이름 체계를 만들 수 있습니다.

app::io
전역 공간아무 namespace에도 넣지 않은 이름은 전역에 놓여 충돌 가능성이 가장 큽니다.
익명 공간파일 내부에서만 보이면 되는 도우미 이름은 익명 네임스페이스로 외부 노출을 줄입니다.
헤더 오염헤더 파일에서 using namespace를 쓰면 포함한 모든 파일의 이름 해석에 영향을 줍니다.