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는 가려진다.
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는 가려진다.
'Soft Ware > C++ 언어!!' 카테고리의 다른 글
#pragma 에 대해서 ^^ 어느분 블러그에서 가지고 왔습니다 (0) | 2012.01.27 |
---|---|
포인터를 이용한 재미있는 소스 (0) | 2012.01.27 |
함수 오버로딩 때 순서 (0) | 2011.10.22 |
템플릿의 구체화 및 특수화 (0) | 2011.10.22 |
구도체 및 클래스시 어느 멤버 변수만 Swap 할때(명시적 특수화) (0) | 2011.10.22 |