이름공간은 프로그램 소스 코드에 이름을 부여하는 방법이다. 아래와 같이 함수명이 같은 함수가 복수로 있다면 컴파일러 오류가 발생한다.
#include <iostream>
int fun() {
return 10;
}
int fun() {
return 20;
}
int main() {
std::cout << fun() << std::endl;
return 0;
}
같은 이름의 함수를 사용했기 때문에 컴파일러 오류를 발생한다. 컴파일러는 어떤 함수를 호출해야 하는지 구분할 수 없다. 함수 오버로딩도 아니고, 그냥 함수명이 중복이 되었기 때문이다. 하지만 이름 공간을 사용하면 컴파일러 오류가 발생하지 않는다. 이름공간은 컴파일러가 공간안을 해석하여 공간을 통해 접근하기 때문이다. 아래의 코드는 이름 공간(namespace)를 사용하여 같은 함수명을 작성한 예제이다.
#include <iostream>
namespace a {
int fun(){
return 10;
}
}
namespace b {
int fun(){
return 20;
}
}
int main() {
std::cout << a::fun() << ", " << b::fun() << std::endl;
return 0;
}
a 라는 이름 공간에 fun() 이라는 함수를 정의하고 사용할 때는 a::fun() 처럼 접근할 수 있다. std::cout 도 이름 공간(namespace)를 활용한 것이다.
'C 언어 개열 > C++ ' 카테고리의 다른 글
const 키워드와 메모리 영역 (0) | 2010.08.19 |
---|---|
using 키워드와 전역변수 접근방법 (0) | 2010.08.19 |
디폴트(Default) 매개변수와 인라인 함수 (0) | 2010.08.19 |
함수 오버로딩(function overroding) (0) | 2010.08.18 |
C++ 문법 특성과 표준 입출력 (0) | 2010.08.18 |