반응형
네임스페이스(namespace)란?

C++에서 네임스페이스(namespace)는 식별자들을 그룹화하여

충돌을 방지하고 코드의 모듈성을 촉진하는데 사용되는 기능입니다.

네임스페이스는 일반적으로 C++ 표준 라이브러리 및 사용자 정의

코드에서 사용됩니다.

 

네임스페이스는 전역 범위에서 이름 충돌을 방지하기 위해 사용된다.

여러 개의 라이브러리 또는 모듈을 사용할 때 각각에 동일한 이름의 함수,

클래스, 변수 등이 있는 경우 충돌이 발생할 수 있다. 네임스페이스는

이러한 충돌을 방지하기 위해 식별자들을 고유하게 만들어 준다.

 

 

 

네임스페이스 정의

네임스페이스의 정의는 아래의 코드와 같이 할 수 있다.

namespace MyNamespace // 네임스페이스 이름
{
    // 네임스페이스에 속하는 함수, 클래스, 변수 등 정의
    int myFunction();
    class MyClass {
        // 클래스 멤버 정의
    };
    // ...
}

 

 

 

네임스페이스 사용

네임스페이스 내에 있는 함수나 클래스에 접근하려면 아래의 코드처럼 사용 가능하다.

int result = MyNamespace::myFunction();		// 네임스페이스이름::함수명()
MyNamespace::MyClass obj;

 

 

 

네임스페이스 정리

네임스페이스는 전역에서 쓰듯이 사용가능합니다.

네임스페이스끼리는 함수나 그 안에 데이터를 공유하지 않습니다.

 

주로 라이브러리를 만들때 사용됩니다.

 

네임스페이스를 사용하여 함수, 클래스, 변수등을 그룹화하면 다른 네임스페이스와의 충돌을

피할 수 있습니다. 또한 여러 개의 네임스페이스를 중복선언이 가능하여 계층 구조를 만들 수도 있습니다.

 

같은 네임스페이스를 공유하면 그 네임스페이스의 함수안에 다른 함수를 쓸 때

네임스페이스 이름을 생략할 수 있습니다. 다른 네임스페이스 함수를 호출할 때는

네임스페이스 이름을 붙여야 합니다.

 

네임스페이스 함수를 정의 하는곳이나 구현하는 곳이나 네임스페이스 내부로 간주합니다.

 

네임스페이스는 typedef처럼 별칭을 사용할 수 있습니다.

namespace ABC = AAA::BBB::CCC; // 네임스페이스 중첩이 가능하며, 이렇게 별칭으로 사용가능

// 두개의 코드는 같다.
AAA::BBB::CCC::num1
ABC::num1

 

아래의 코드처럼 using namesapce 네임스페이스이름; 를 사용하면

네임스페이스 이름을 생략하고 직접 함수를 호출할 수 있다.

#include <iostream>

namespace MyNamespace 
{
    void myFunction() 
    {
        std::cout << "Hello from MyNamespace!" << std::endl;
    }
}

int main() 
{
    using namespace MyNamespace;	//using namesapce 네임스페이스이름
    
    myFunction(); // 네임스페이스 이름을 생략하고 짧게 사용
    
    return 0;
}

 

반응형

 

반응형

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

템플릿  (0) 2023.05.30
참조자(Reference)  (0) 2023.05.30
입출력  (0) 2023.05.30
객체에 대한 이해  (0) 2023.05.30
제네릭 프로그래밍  (0) 2023.05.30

+ Recent posts