namespace는 어떻게 보면 java에서의 패키지와 유사한 묶음에 대한 접근관리라고 하면 되려나?
아래와 같은형식으로 선언이 되며
다른 namespace 에서는 동일한 변수 명을 선언해도 문제가 없다.
대신에 :: scope 연산자를 통해서
어떠한 영역의 변수인지를 알려주어야 한다.
물론 namespace 역시 선언되지 이전에 먼저 사용할수는 없으며
사용시에는 에러가 발생한다.
아래와 같은형식으로 선언이 되며
namespace _spacename_ { } |
다른 namespace 에서는 동일한 변수 명을 선언해도 문제가 없다.
대신에 :: scope 연산자를 통해서
어떠한 영역의 변수인지를 알려주어야 한다.
물론 namespace 역시 선언되지 이전에 먼저 사용할수는 없으며
사용시에는 에러가 발생한다.
using namespace std;
using namespace first;
namespace first
{
int x = 5;
int y = 10;
} }
namespace second
{
double x = 3.1416;
double y = 2.7183;
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << x << endl;
cout << y << endl;
cout << second::x << endl;
cout << second::y << endl;
return 0;
|
cpp_console.cpp(7) : error C2871: 'first' : 같은 이름을 가진 네임스페이스가 없습니다.
cpp_console.cpp(23) : error C2065: 'x' : 선언되지 않은 식별자입니다.
cpp_console.cpp(24) : error C2065: 'y' : 선언되지 않은 식별자입니다. |
물론, using은 중복되는 여러개를 사용할 수 있으나
using namespace std; namespace first
{
int x = 5;
int y = 10;
}
namespace second
{
double x = 3.1416;
double y = 2.7183;
}
using namespace first;
int _tmain(int argc, _TCHAR* argv[])
{
cout << x << endl;
cout << y << endl;
cout << second::x << endl;
cout << second::y << endl;
return 0;
} |
[링크 : http://www.cplusplus.com/doc/tutorial/namespaces/]
아무래도 네임스페이스 내에 어떤 변수가 있을지 모르니
되도록이면 여러개의 using namespace는 쓰지 않는게 정신건강에 좋을듯 하다.
아무래도 네임스페이스 내에 어떤 변수가 있을지 모르니
되도록이면 여러개의 using namespace는 쓰지 않는게 정신건강에 좋을듯 하다.
실험은 조금 더 해봐야 겠지만..
해제하는 명령은 존재하지 않는것 같기에
using namespace는 {} 에 영향을 받으므로 블럭으로 감싸서 어느정도 회피는 가능하다고 한다.
[링크 : http://blog.naver.com/harkon/120061325101]
해제하는 명령은 존재하지 않는것 같기에
using namespace는 {} 에 영향을 받으므로 블럭으로 감싸서 어느정도 회피는 가능하다고 한다.
[링크 : http://blog.naver.com/harkon/120061325101]
'Programming > C++ STL' 카테고리의 다른 글
c++ function overloading (2) | 2013.03.04 |
---|---|
c++ class member function (0) | 2013.03.04 |
c++ class와 struct (0) | 2013.03.03 |
c++ cout 제어하기 (0) | 2013.02.15 |
c++ inheritance(상속) (0) | 2013.02.15 |