C 언어 개열/C++

using 키워드와 전역변수 접근방법

본클라쓰 2010. 8. 19. 22:00

using 키워드


 using 키워드는 namespace 로 선언된 부분의 함수나 변수에 접근할 때 좀 더 쉽게 접근하기 위한 방법을 제공하는데 사용법은 다음과 같다.

using a::function;

using namespace a;

  1. using a:function 은 namespace a 안에 있는 function 함수를 호출할 때 그냥 function 이라는 이름만으로 호출하겠다라는 뜻.
  2. 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;

}