namespace
- cout 혹은 cin에 붙는 std는 C++ 표준 라이브러리의 모든 함수, 객체 등이 정의된 이름공간(namespace)이다.
- 이름 공간은 말 그래도 정의된 객체에 대해 어디 소속인지 지정해주는 것과 동일하다.
- 중복된 이름을 가진 함수가 늘어나면서 C++에서는 이를 구분하기 위해, 같은 이름이라도, 소속된 이름 공간이 다르면 다른 것으로 취급하게 됐다.
💡 참고로 `using namespace std;` 와 같이 어떠한 이름 공간을 사용하겠다라는 선언하는 것은 권장되지 않는다!!!
만약 std에 이름이 겹치는 함수를 만들게 된다면 오류가 발생하게 되기 때문이다.
따라서 `std::` 를 직접 앞에 붙여서 std의 이름공간 함수라는 것을 명시해주는 것이 좋다.
이름 없는 이름 공간
- C++에서는 이름 공간에 굳이 이름을 설정하지 않아도 된다.
- 이 경우 해당 이름 공간에 정의된 것들은 해당 파일 안에서만 접근할 수 있다. 마치
static
키워드를 사용한 것과 같은 효과를 낸다.