티스토리 뷰

Language/C++

[C++] namespace

Mr.SIM 2013. 10. 5. 22:55

namespace는 하나의 집합을 나타낸다. 어떤 프로젝트를 하다보면, 여러 프로그래머가 만든 함수이름이 겹치게 되면 어떻게 될까..물론 프로그램이 제대로 동작하지 않을 것이다. 이를 해결하기 위한 방법이 namespace이다.


A()라는 함수가 두개 있다고 하자. 하지만, A라는 함수에 어떤 부모집합이 있다면, 그 부모집합의 A()를 호출하면, 원하는 A() 함수가 구분된다.

다시말해, korea학교에 다니는 철수와 go학교에 다니는 철수가 서로 다른 철수임을 확인할 수 있듯이, 이도 마찬가지다.

#include<iostream>

using std::cout;
using std::endl;
 
namespace AAA{
	void showFunc(){
		cout<<"AAA"<<endl;
	}
}


namespace BBB{
	void showFunc(){
		cout<<"BBB"<<endl;
	}
}

int main(){

	AAA::showFunc();
	BBB::showFunc();

	return 0;
} 



다음과 같이 showFunc()라는 함수를 호출할 수 있게 된다.

namespace의 사용법은 다음과 같이 namespace 이름 {  ...  } 으로 사용된다.



이런 namespace명을 생략할 때 사용되는 선언이 using이다.

#include<iostream>
 
using std::cout;
using std::endl;
 
namespace AAA{
	void showFunc(){
		cout<<"AAA"<<endl;
	}
}


namespace BBB{
	void showFunc(){
		cout<<"BBB"<<endl;
	}
}

using namespace AAA;

int main(){

	showFunc();
	BBB::showFunc();

	return 0;
}



다음은 네임스페이스 AAA를 using사용으로 바로 함수 호출하는 예제이다.

우리가 사용하는 using namespace std; 또한, std라는 네임스페이스에 접근해서 cout, cin .... 을 사용하겠다는 선언이다.


'Language > C++' 카테고리의 다른 글

[C++] 예외처리  (0) 2013.10.06
[C++] 함수템플릿과 템플릿함수  (0) 2013.10.06
[C++] 멤버 이니셜라이저  (0) 2013.10.05
[C++] 생성자와 소멸자  (0) 2013.10.05
[C++] 매개변수의 디폴트 값  (0) 2013.10.05
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday