ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • namespace
    c++ 2020. 1. 13. 19:59

    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라는 클래스를 사용하는 것을 명시하기 위해 설정해 주는 것이다.

    'c++' 카테고리의 다른 글

    고정너비정수  (0) 2020.01.14
    전처리기  (0) 2020.01.13
    헤더 가드  (0) 2020.01.13
    모두의 약수  (0) 2020.01.03
    인라인함수  (0) 2019.12.29
Designed by Tistory.