줘이리의 인생적기

02. [C++] 명칭공간(namespace) 본문

공부/C++

02. [C++] 명칭공간(namespace)

줘이리 2021. 8. 18. 23:00
728x90

라이브러리와 충돌을 방지하기 위해 사용되는 명칭공간 사용법에 대해 공부해보겠습니다.

 

기본적으로 사용하는 cout, cin, endl등은 std 명칭공간에 위치합니다.

std 명칭공간을 생략하기 위해 아래와 같은 방법을 사용합니다.

#include <iostream>

using namespace std;

int main() {
	int x = 100;

	cout << x << endl;

	return 0;
}

 


 

저희가 명칭공간을 직접 만들어 사용할 때도 있어야 겠죠?

간단한 명칭공간을 만들어보겠습니다.

 

#include <iostream>

using namespace std;

namespace Space1 
{
	int add1(int a, int b) 
	{
		return a + b;
	}
}

int main() {

	cout << Space1::add1(1,2) << endl;

	return 0;
}

여기서 유심히 봐야 할 부분은 namespace 사용법인 cout 부분입니다.

Space1뒤에 콜론을 2개 붙여 사용합니다.

 


namespace 2개를 사용해 보겠습니다.

 

#include <iostream>

using namespace std;

namespace Space1 
{
	int add1(int a, int b) 
	{
		return a + b;
	}
}

namespace Space2
{
	int add2(int a, int b)
	{
		return 2*(a + b);
	}
}

int main() {

	cout << Space1::add1(1, 2) << endl;
	cout << Space2::add2(1, 2) << endl;

	return 0;
}

 


namespace안에 namespace도 가능한지 만들어 보겠습니다.

 

#include <iostream>

using namespace std;

namespace Space1 
{
	namespace Space3 {
		int add1(int a, int b)
		{
			return a + b;
		}
	}
}

namespace Space2
{
	int add2(int a, int b)
	{
		return 2*(a + b);
	}
}

int main() {

	cout << Space1::Space3::add1(1, 2) << endl;
	cout << Space2::add2(1, 2) << endl;

	return 0;
}

잘 작동하네요 !


너무 길어질수도 있으니 명칭공간을 생략 해보겠습니다

 

#include <iostream>

using namespace std;

namespace Space1 
{
	namespace Space3 {
		int add1(int a, int b)
		{
			return a + b;
		}
	}
}

namespace Space2
{
	int add2(int a, int b)
	{
		return 2*(a + b);
	}
}

int main() {
	using namespace Space2;
	using namespace Space1::Space3;

	cout << add1(1, 2) << endl;
	cout << add2(1, 2) << endl;

	return 0;
}

잘 작동하네요

 

명칭공간에 대해서 알아보았습니다.