IT/C and C++

[펌] [namespace]네임스페이스란?

KSI 2005. 9. 7. 20:40

 

우선 namespace를 사용하는 방법은 아래 예문을 참고 하십시오.

// namespaces
#include// iostream.h를 사용
namespace first
{
int nValue = 5;
}
namespace second
{
double nValue = 2.123;
}
int main () {
cout << first::nValue << endl;
cout << second::nValue << endl;
return 0;
}


namespace의 장점이라면 class와 유사 하지 않을까 싶네요.. 같은 특성을 묶어 놓기 때문에
구분이 쉽고 동일 이름의 함수나 변수라도 namespace가 다르므로 혼동을 막고 가독성이
높아집니다. 보면 class 멤버함수 정의하고 내용 입력할 때와 형태가 비슷하다 것을 알수 있을
것입니다.


1997 ANSI에서 c++ 의 표준 라이브러리를 발표했는데요.
Templet으로 라이브러리를 표준화 하였기 때문에 Standard Templet Library 라고 하고
줄여서 STL 이라고 합니다. 이 STL을 std 라는 namespace에 묶어 놓았기 때문에 함수를
사용할 때 std:: 를 앞에 붙이게 됩니다. 그래서 각 해더의 함수를 사용할 때 std:: 를 

붙입니다. 그리고 표준화 되면서 해더파일을 나타내는 .h 가 모두 떨어져 나갔고 math.h
같은 것은 cmath 와 같이 앞에 c가 붙게 되었습니다.



std::cout 이나 std::cin 은 STL의 cout과 cin을 사용한다는 것을 나타냅니다.



using namespace std; 를 사용하면 프로그램 내에 std:: 를 붙이지 않아도 namespace를
std:: 로 고정하고 함수를 불러 사용할 수 있습니다. 하지만 자신이 만드는 header에는
되도록이면 using을 하지 않고 각 함수에 std:: 를 붙여 사용하는 것이 좋습니다.
STL에 대한 것은 STL tutorial 이나 The C++ Programming Language를 보시면 많은 참고가
되리라 생각합니다. namespace로 묶인 것을 사용하는 방법은 아래 3가지 예제를 참고하세요.



------------------------------------

#include// iostream을 사용
using namespace std;
int main()
{
cout << "Hi..!" << endl;
return 0;
}
------------------------------------
#include
using std::cout;
using std::endl;
int main()
{
cout << "Hi..!" << endl;
return 0;
}
------------------------------------
#include
int main()
{
std::cout << "Hi..!" << std::endl;
return 0;
}
------------------------------------