using 키워드와 전역변수 접근방법
using 키워드
using 키워드는 namespace 로 선언된 부분의 함수나 변수에 접근할 때 좀 더 쉽게 접근하기 위한 방법을 제공하는데 사용법은 다음과 같다.
using a::function;
using namespace a;
- using a:function 은 namespace a 안에 있는 function 함수를 호출할 때 그냥 function 이라는 이름만으로 호출하겠다라는 뜻.
- using namespace a 는 namespace a안에 있는 변수나 함수는 그냥 접근하겠다는 뜻
두 가지 방법 중에 어느 것을 사용하는 것이 좋을까? 하는 질문에 답은 'using a::function 처럼 사용하는 것이 더 좋다' 이다. namespace 라는 개념이 등장한 이유는 변수나 함수의 이름 충돌을 막겠다는 뜻인다. using namespace a 라고 사용하면 언젠가는 이름 충돌이 발생할 수 있기 때문에 조금 복잡해 진다고 해도 using a:function 처럼 사용하는 것이 올바른 선택이아.
using std::cout;
using std::cin;
using std::endl;
전역변수에 접근하는 방법
int val = 100;
int main(void) {
int val = 50;
val += 1;
std::cout << ::val << std::endl;
return 0;
}
위의 코드를 실행하면 '51'을 출력한다. 하지만 아래 코드는 101을 출력한다. 물론 변수로 선언된 부분에서 전역변수와 지역변수 명이 같은 오류가 있지만 테스트를 위해 작성된 코드이다.
int val = 100;
int main(void) {
int val = 50;
::val += 1;
std::cout << ::val << std::endl;
return 0;
}