[c++] namespace

C++/Tips / / 2021. 3. 9. 16:34

=> namespace는 개체를 구분할 수 있는 범위를 나타내는 말로써, 일종의 개발자 사용 공간이다.

=> 만일 같은 이름을 가진 두개 이상의 식별자가 namespace 구분 없이 사용하게 될 경우, 모호해져 오류가 발생할 수 있다.

=> 그러나 namespace를 사용하면, 같은 이름을 가졌을 지라도 namespace 구분을 통하여 구별할 수 있다.

1. std

#include<iostream>
using namespace std;

int main()
{
	cout << "Hello world!" << endl;
    return 0;
}
#include<iostream>

int main()
{
	std::cout << "Hello world! \n";
    return 0;
}

=> Standard namespace로써, 기본적으로 사용하게 되는 namespace.

=> 우리가 자주 사용하는 cout / cin / endl 등이 속해있다.

=> 보통은 라이브러리 선언 이후에 using namespace std 로 사용하는 경우가 많다.

    -> 이 경우 여러가지 namespace를 사용하게 될 경우에 겹침현상이 많이 발생할 수 있고, 가독성이 떨어질 수 있다.

    -> 그러나 단일 namespace(std)를 사용할 경우에는 무관하다.

 

2. Scope resolution operator(::)

    std::cin >> a;  // std namespace
    std::cout << a; // std namespace

=> 컴파일러가 특정 namespace에서 식별자를 찾는 방법 중 하나이다.

=> (namespace::함수)의 형태로 사용하게 된다.

=> 만일 전역 namespace를 사용하고 싶다면, namespace 이름을 생략하여 사용해도 된다.(::cin)

 

3. using 지시자(directive)

using namespace std;

=> using을 사용하면 명시된 namespace에서 속한 것을 다 가져와서 ::를 사용하지 않고 사용할 수 있게 해준다.

=> using 선언 영역에서만 사용할 수 있다.

 

4. using 지시자(declaration)

using namespace std::abs

=> 위와 같이 namespace::function을 사용하면, 특정 함수인 function만을 사용하겠다고 선언하는 방식

=> using 선언 영역에서만 사용할 수 있다.

 

5. namespace 생성

#include<iostream>

namespace NewName
{
	int a = 10;
    int FUNC(int b)
    {
		return 10*5;
    }
}

int main()
{
	int a = 100;
    std::cout << NewName::a << std::endl;    //10
    std::cout << a << std::endl;             //100
    return 0;
}

=> 위와같이 namespace 이름을 부여하고, 범위를 정해준 이후, 안에서 변수 및 함수를 생성하면 고유의 namespace를 제작 / 사용할 수 있다.

 

6. namespace 별칭

namespace A
{
	namespace B
    {
    }
}

namespace C = A::B

=> namespace 내의 namespace를 부르기 위해서, A::B처럼 사용하는 것 보다 C로 별칭을 지정해여 불러낼 수 있다.

'C++ > Tips' 카테고리의 다른 글

[C/C++] #define , #undef  (0) 2021.03.23
[c/c++] 주석  (0) 2021.03.16
[C++]ASCII 대<->소 문자 변환  (0) 2021.03.02
[c/c++/c#]++i / i++  (0) 2021.02.23
[c++]Try / Catch  (0) 2021.02.16
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기