전달된 메시지
보낸사람: shellbt <shellbt>
날짜: 2009년 11월 26일 오후 2:05
제목: c++ namespace,using ?
받는사람: PostingWordPress <cume24jovi>
- 기본 개념
- 어떤 특정 공간을 지칭할 수 있는 이름을 부여해 주는 문법
예)
#include <iostream>void function()
{
std::cout << "1st function" << std::endl;
}void function()
{
std::cout << "2nd function" << std::endl;
}void main()
{
function();
}
위와 같은 소스에서 main()에서 호출하는 function()은 어느 넘인지 확실치 않기 때문에 에러를 내게 된다.(컴파일 시에 에러 난다)
이런 경우 namespace을 사용하면 같은 이름의 함수를 간단하게 구분해서 사용할 수 있다.
다음은 위의 소스를 namespace을 사용해서 변경한 소스다.
#include <iostream>
namespace first
{void function()
{
std::cout << "1st function" << std::endl;
}}
namespace second
{void function()
{
std::cout << "2nd function" << std::endl;
}}
void main()
{
first::function();
}
위와 같이 main()에서 first::function()으로 호출을 하게 되면 프로그램은 첫 번째 function()함수를 호출한다.
하지만, 자주 사용해야 함수를 호출 할 때 마다 first::function() 이런 식으로 프로그램을 작성하다 보면 엄청 귀찮은 일이 된다.
그래서 이런 문제를 해결하기 위해서 사용하는 게 using이다.
unsig은 단어 뜻 그대로 사용하는데 쓰인다(앙?)
상세한 내용이 있을지도 모르지만, 귀찮으니 어케 쓰는지만 간단하게 언급
첫번째 방법 :
using 정의 하기 전에 함수 호출 ->
first::function();
이 녀석을 간단하게 함수 원형으로만 호출 할 수 있도록 사용하려면
using first::function;
이렇게 정의해 주면, 다음부터는 간단하게 function(); 으로 호출해 주면 function()은 first namespace에 있는 function()을 호출하게 된다.
두번째 방법 :
특정 namespace안에 함수만 호출하는게 아니라, namespace 전체를 사용하고 싶을 때,
using namespace first;
이렇게 정의하게 되면, namespace first 안에 속한 함수들은 그냥 원형으로만 호출해 줘도 알아서 알아듣고 그 넘들을 호출해 준다.
이 상황에 대한 확실한 예는 using namespace std; 을 찾아보길 바란다.


