Prosto

이름공간(name space) 본문

Programing/C++ Programing

이름공간(name space)

Prosto 2011. 9. 25. 13:22

이번에는 C++의 큰 장점 중 하나인 이름공간입니다.
혼자가 아닌 여럿이 모여 개발하는 경우가 대부분인데, 이러한 경우 매우 좋습니다.

예를 들어 A, B, C 세 사람이 모여 개발하는 경우,
모두가 같은 이름의 함수를 사용했을 때
충돌이 발생될 수 있습니다.
그렇게 될 경우 엄청난 시간싸움이 될 수도 있죠.. (여기 고치고, 저기 고치고...)
그런 경우에 매우 도움이 되는 것이 바로 namespace 입니다.
셋 모두 Function()이라는 함수가 있을 경우
A의 Function(), B의 Function(), C의 Function() .. 과 같이 각자이름을 붙여 사용되는 것입니다.

namespace 이름공간명. { .. }

namespace Prosto
{
void func() {...}
}
이렇게 선언할 경우
main 함수에서 사용할 때,
Prosto::func();
와 같이 사용할 수 있습니다. (여기에서 ::는 범위지정 연산자.)

그리고 함수를 선언하여 사용 할 때는
반드시 네임스페이스에서 하여야 합니다. (정의는 따로 하여도 좋음.)
namespace Prosto
{
void func() {};
}
...
void Prosto::func() { ... }

(같은 이름공간의 경우에는 별도의 이름공간 명시를 할 필요가 없습니다.)



using을 이용한 이름공간 명시.
using을 통하여 별도로 이름공간을 명시할 필요가 없어집니다.

using namespace std; 명시 할 경우.
std::cin;
std::cout;
std::endl; 과 같이 사용할 필요 없이
cin; cout; endl;으로 사용할 수 있습니다. (만든 이름 공간의 경우도 같음)

세부도 가능.  using std::cin;

단 남발할 경우 이름공간(namespace)이 무의미 해집니다. (잦은 충돌 발생 확률 상승.)

namespace AAA
{
namespace BBB{ ... }
}
namespace AB=AAA::BBB; 와 같이 별칭 선언 가능.
AB::num1=10;
이렇게 사용 가능.

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

C++에서의 파일 분할. (+예)  (0) 2011.09.27
클래스를 이용한 예제. (좌표 점 이동)  (0) 2011.09.27
인라인(inline) 함수  (0) 2011.09.25
매개변수의 디폴트 값.  (0) 2011.09.25
Function Overloading  (0) 2011.09.25
Comments