코드를 체계적으로 정리하는 중요한 방법 중 하나가 네임스페이스예요.
두 함수의 이름이 충돌할 수 있는데, 이럴 때는 두 함수를 서로 다른 네임스페이스에 넣어 해결할 수 있어요.
네임스페이스는 중첩할 수 있어서 커다란 코드베이스를 구조화하는 데 도움이 돼요.
네임스페이스에 접근할 때는 스코프 확인 연산자 ::를 사용해요.
아래 예제는 서로 다른 두 foo 함수를 사용하는 방법을 보여줘요.
각 함수 앞에 해당 네임스페이스를 붙이면 두 함수를 함께 사용할 수 있어요.
namespace my_ns {
int foo() {
return 44;
}
namespace my_inner_ns {
int baz() {
return 90;
}
}
}
namespace my_other_ns {
int foo() {
return -2;
}
}
int myresult{my_ns::foo() + my_other_ns::foo() * my_ns::my_inner_ns::baz()};
네임스페이스가 깊게 중첩되면 코드가 너무 장황해질 수 있어요.
using으로 네임스페이스를 가져오면 이런 장황함을 없앨 수 있어요.
이렇게 하면 모든 이름이 전역 네임스페이스로 옮겨져요.
어느 정도 구분을 유지하려면 별칭을 쓰는 게 좋아요.
int my_other_result{my_ns::my_inner_ns::baz()};
using namespace my_ns::my_inner_ns; // importing the complete namespace
int also_other_result{baz()};
namespace m = my_ns; // setting an alias
namespace o = my_other_ns;
int also_my_result{m::foo() + o::foo() * m::my_inner_ns::baz()};