Soft Ware/C++ 언어!!

using 지시자와 using 선언

달려가보자 2011. 10. 24. 16:31
using에 관한 저의 생각을 적어보겠습니다 틀릴수도 있습니다. 

using 지시자와 using 선언 어떨때 다른가 ??

키워드는 namespace 이다!!!  여기서 namespace 는 무엇일까?

제 생각은 namespace는 우리가 살고있는 지역을 뜻하는것 같다 .

예로  지역 광주 지역 서울 이런것 처럼 지역을 뜻하는것 같다.

namespace std{int a};

namespace cmd{int a};

여기서 std 와 cmd는 광주 , 서울을 뜻한다. 

자 그럼 광주에서도 동이 있을것이다 그러한 동이 int a라는 변수 등이다.

예로 광주에 삼성동이 있다고 하고 서울에는 실제로 삼성동이 있다.

컴파일러를 여행을 하고 있는 외국이 이라고 하자 . 그 외국인은 광주 삼성동 서울 삼성동을 알고 있다.

그 외국인에게 삼성동이라는 말만 사용해서 설명하면 외국인을 어느 삼성동을 뜻하는지 알수가 없다.

즉 컴파일러는 에러를 발생시킨다. 

자 그럼 다시 외국인에게 서울이라는 말을 앞에 써보자. 그럼 외국인을 서울 삼성동을 생각하면서 

말을 듣게 될것이다.

이처럼 namespace는 지역을 만들어 주는것이다. 그 지역안에 변수나 함수 등등의 이름이 

다른 지역에 있어도 지역이 다르기 때문에 에러가 발생하지 않는다.

자 그럼 namespace에 대해 설명했으니 선언 과 지시자에 관해서 구별해 보자.

선언는 using 키워드를 선언하고 지역이름인 위의 std::a라고 하면 std안에 있는 a를 선언하는것이다.

선언를 하면 그 함수내에서는 같은 이름을 쓸수 없으면 쓸경우에는 컴파일러는 에러 메세지를 띄운다.

그이유는 선언 영역에 하나의 특별한 이름을 추가 하기 때문이다. 

그러나 using namsespace std; 라고 그영역에 선언하고 지역변수를 a라고 선언할 경우 

선언과 다르게 using 지시자는 에러를 발생시키지 않는다. 

대신 에러는 발생되지 않지만 지역변수 a에 의해서 std::a는 가려진다.