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; } |
'컴퓨터 > C++' 카테고리의 다른 글
(Visual C++) (C++.NET) ( Managed C++) (C++/CLI) 의 차이점 (0) | 2013.06.07 |
---|---|
[C++] C++의 형변환 const_cast, static_cast, reinterpret_cast, dynamic_cast (0) | 2013.02.20 |
[정렬][C++] Template를 이용한 Swap 함수 (0) | 2013.01.30 |
[정렬][C++] Template를 이용한 버블 정렬(Bubble Sort) (0) | 2013.01.30 |
[C++][자료구조] Template 를 이용한 Stack Source Code (0) | 2013.01.04 |