。공부 。

<C++> Namespace (이름공간)

kyoe 2007. 11. 21. 22:47
Namespace란 말그대로 '이름 공간'이라는 것이다. 우리가 예를 들어 어떤 프로젝트를 팀을 나눠서 진행을 했다고 하고 프로젝트 마감일에 모여 서로의 프로그램을 합쳤다치자 그때 우리는 중복되는 함수이름이나 변수명들을 발견한다. 이럴때 어떤한팀이 손해를보고 함수명과 변수명을 고친다고 하면 여간힘든일이 아닐것이다 물론 작은프로젝트일 경우엔 피해가 덜하겠지만 큰프로젝트라고 하면 대략 난감이다..;;
이를 대비해서 우리는 namespace라는 키워드를 사용해 이름공간을 선언한다.

- 아래 예를 통해서 namespace(이름공간)을 사용하는법을 알아보자. -
#include <iostream>      //신 버전의 해더 선언 'iostream.h'는 구버전의 헤더이다.

namespace A_kyoe{        //A_kyoe 라는 이름 공간
    void function(void){
        std::cout<<"A_kyoe 에서 정의한 함수"<<std::endl;
    }
}

namespace B_kyoe{        //B_kyoe 라는 이름 공간
    void function(void){
        std::cout<<"B_kyoe 에서 정의한 함수"<<std::endl;
    }
}

int main(void){
    A_kyoe::function();      // ' :: ' 범위연산자를 이용해 A_kyoe 안의 function()함수를 사용한다.
    B_kyoe::function();
    return 0;
}

위의 예제에서는 중복되는 함수 function()함수가 있다. 만약 namespace를 선언하지 않은 상태에서라면 당연히 컴파일 에러가 날것이다 하지만 namespace를 선언함으로써 A_kyoe 공간과 B_kyoe공간 안에 각각의 function()함수를 선언해 넣었기때문에 함수명은 같지만 둘은 서로다른 공간에 존재하는 함수가 되는것이다.