-
namespace는 같은 이름을 충돌하지 않게 하는 문법이다. 수 많은 라이브러리를 include했을때 서로 다른 라이브러리에 같은 이름의 형식이나 개체가 있을 때 충돌하지 않게 namespace로 감싸 충돌하지 않게 한다.
#include<iostream> using namespace std; int add(int a, int b)//a팀의 add { return a + b; } int add(int a, int b)//b팀의 add { return a + a + b; } int main() { a(3, 4); }
예를들어 위와 같이 개발 회사에서 하나의 프로젝트를 수행하기위해 개발a팀과 b팀이 파트를 나눠서 작업물을 수행하고있다. 마감 날짜가 나가와 각 팀의 작업물을 통합하려고 한다 그런데 이때 a팀과 b팀에서 add라는 동일한 이름의 함수를 만들어 사용했다, 따라서 통합할때 2가지의 동일한 이름의 add함수가 정의 되었고 어느팀의 add인지 구분을 할 수가 없게되어 자꾸 충돌이 일어났다.
이때 다음과 같이 namespace를 사용하여 각 팀의 add를 구분지어 사용할수있다.
#include<iostream> using namespace std; namespace Ateam { int add(int a, int b)//a팀의 add { return a + b; } } namespace Bteam { int add(int a, int b)//b팀의 add { return a + a + b; } } int main() { cout << Ateam::add(3, 4);//여기서 :: (스코프연산자) 는 범위를 지정해 주는 연산자 cout << Bteam::add(5, 4); }
using namespace std
직역하면 사용하고있다 이름 공간에 있는 std클래스에 정의되어있는 함수들을..
std에는 cout,cin,endl 등 자주 쓰이는 함수들이 정의 되어 있다.
using namespace std; 혹은 using std::cout라고 선언을 하지 않으면 범위 지정 연산자(::)를 사용해서std::cout 이런 식으로 표기를 해야 하지만 using namespace std; 혹은 using std::cout라고 선언을 하면 cout << "Hellow World!!"; 라고 쓸수 있다.
또한
using namespace std;를 해줘야 여러 가지 함수를 올바르게 사용할 수 있는데 이는 c와 달리 c++은 클래스로 이루어져 있어 그 중에 std라는 클래스를 사용하는 것을 명시하기 위해 설정해 주는 것이다.