c++/c 언어 기반의 c++ 1

01-05 [C++] 이름공간 (namespace) 이해하기

TIM_0529 2022. 12. 28. 02:46
반응형

namespace 가 필요한 이유

여럿이서 작업을 할때 서로 사용자 정의 명칭이 같을 경우가 있다. 이럴경우 컴파일 에러가 발생하게 된는데, 이런 경우를 방지하기 위해서 이름공간이라는 키워드가 생기게 되었다.

 

예시를 보면 이해가 더 잘 된다.

 

#include <iostream>
using namespace std;

void MyFunc()
{
	cout << "My first function" << endl;
}
void MyFunc()
{
	cout << "My second function" << endl;
}

int main()
{
	MyFunc();
}

컴파일 진행시 당연히 컴파이 에러가발생된다

"MyFunc" 선언되지 않은 식별자입니다.  라는 에러 메시지가 나온다.

 

이번에는 namespace 를 사용해보겠다.

#include <iostream>
using namespace std;

namespace FirstMade {
	void MyFunc()
	{
		cout << "My first function" << endl;
	}
}
namespace SecondMade {
	void MyFunc()
	{
		cout << "My second function" << endl;
	}
}


int main()
{
	FirstMade::MyFunc();
	SecondMade::MyFunc();
}

결과

namespace는 키워드를 사용해서 정의된 함수를 감싸주어서 사용한다.

 

::  

은 ' 범위지정 연산자 ' 라고 하며, 이름공간을 지정할 때 사용하는 연산자이다.

 

다음은 함수의 원형 선언 방법이다.

#include <iostream>
using namespace std;

namespace FirstMade {
	void MyFunc();
	
}
namespace SecondMade {
	void MyFunc();
	
}


int main()
{
	FirstMade::MyFunc();
	SecondMade::MyFunc();
}

void FirstMade::MyFunc(){
	cout << "My Function from First Made namespace" << endl;
}

void SecondMade::MyFunc() {
	cout << "My Function from Second Made namespace" << endl;
}

결과

 

 

반응형