컴퓨터/C++
[C++] Namespace 네임스페이스
Luyin
2012. 8. 9. 17:04
1. Namespace
정의 : 특정영역(공간)에 이름을 붙여주기 위한 문법적 요소
원리 : 한 집에 철수라는 이름을 지니는 사람이 두 명 살고 있다면 이는 문제가 된다. 그러나 서로 살고 있는 집이 다르다면 문제될 것이 없다. 201호에 사는 철수와 202호에 사는 철수는 구분 지을 수 있기 때문이다. 다음과 같이 부르면 되기 때문이다. "202호에 사는 철수야!" 이것이 이름공간의 기본 원리이다.
예제)
#include <iostream> namespace A_COM { void function(void) { printf("A.com에서 정의한 함수 \n"); } } namespace B_COM { void function(void) { printf("B.com에서 정의한 함수 \n"); } } int main(void) { A_COM::function(); //A회사에서 정의한 함수 호출 B_COM::function(); //B회사에서 정의한 함수 호출 return 0; } |
2. scope resolution operator(범위 지정 연산자) ::
A_COM::function();
"A_COM이라는 이름공간 안에 선언되어 있는 function 함수를 호출하라"
※전역 변수 호출 또한 가능하다
예제)?
int val = 100; int main(void) { int val=5; val+=1; //지역변수 val를 1 증가 ::val+=1; //전역변수 val를 1 증가 printf("지역변수 val: %d \n", val); printf("전역변수 val: %d \n", ::val); return 0; } |
3. using
using A_COM::function();
"앞으로 function이라는 이름을 참조하는 코드가 나오면 A_COM 이라는 이름 공간 안에 선언된 function이라는 이름을 참조하라는 뜻이다."
예제)
#include <iostream> namespace A_COM { void function(void) { std::count << "A.com에서 정의한 함수" << std::endl; } } using A_COM::function; int main(void) { function(); return 0; } |
using namespace std;
"앞으로 등장 하는 어떤 함수든 std namespace를 참조하라."
"cout, cin 함수는 iostream의 std라는 네임스페이스 안에 정의 되어 있다."
예제)
#include <iostream> using namespace std; int main(void) { int val1, val2; int result = 0; cout << "두개의 숫자 입력 :"; cin >> val1 >> val2; if(val1<val2) //val2가 크다면. { for(int i=val1+1; i<val2; i++) result+=i; } else //val1이 크다면 { for(int i=val2+1; i<val2; i++) result+=i; } cout << "두 수 사이에 존재하는 정수의 합 :" << result << endl; return 0; } |