namespace: 정의된 객체가 어디 소속인지 지정하는 역할
#include "header1.h"
#include "header2.h"
int main()
{
header1::foo(); //header1의 foo
header2::foo(); //header2의 foo
}
이름 없는 이름 공간을 설정할 경우, 정의된 것들은 해당 파일 안에서만 접근할 수 있게 된다. 마치 static 키워드를 사용한 것과 같은 효과를 가진다.
#include <iostream>
namespace {
// 이 함수는 이 파일 안에서만 사용할 수 있다.
// 이는 마치 static int OnlyInThisFile() 과 동일하다.
int OnlyInThisFile() {}
// 이 변수 역시 static int x 와 동일합니다.
int only_in_this_file = 0;
} // namespace
int main() {
OnlyInThisFile();
only_in_this_file = 3;
}
using namespace std
std
라는 네임스페이스에 선언된 모든 식별자들을 현재 코드 범위에 허용하는 코드사용자가 작성한 코드에 std 네임스페이스에 존재하는 동일한 이름의 변수나 함수가 있을 때 해당 변수나 함수가 의도와 다른 코드를 참조하게 될 수 있다. 그렇기 때문에 using namespace std
는 using namespace
의 좋은 사용 습관은 아니다. std가 필요한 경우 std::
를 사용하자