[C++] 네임스페이스(namespace) 개념 및 코드

2022. 6. 28. 12:26♣ C++

이번 포스팅에선 네임스페이스에 대해 알아보겠습니다.

네임 스페이스(namespace): 내부 식별자에 사용될 수 있는 유효 범위를 제공하는 선언적 영역

일종의 집단 영역이라고 볼 수 있습니다.

개발 환경 : VSCode, Windows 10

 

 

 

 

 

기본 개발 세팅은 다음과 같습니다.

#include <iostream>
#include <string.h>
#include <string>
using namespace std;

int main()
{
	return 0;
}

 

 

 

 

 

 

📌 네임스페이스(namespace) 정의 및 선언


네임스페이스는 일종의 영역입니다. 

"해당 영역에 있는 변수, 함수, 구조체... 등은 네임스페이스를 앞에 명시했을 때만 사용할 수 있어!"

따라서 변수, 함수, 구조체, 클래스 등 네임스페이스에 있는 모든 것들은 네임스페이스로 구분할 수 있습니다.

 

 

네임스페이스는 다음과 같이 선언합니다.

namespace 이름
{
	변수타입 변수명;
    	함수;
    	구조체;
}

 

 

하나의 예시입니다.

namespace tennis
{
	string player;
    	int height;
    	struct 
    	{
    		int weight;
    	};
}

 

 

이렇게 선언된 네임스페이스는 다음과 같은 방식으로 사용합니다.

네임스페이스::변수명;

 

namespace tennis
{
	string player;
    	int height;
}

int main()
{
	tennis::player = "nadal";
    	cout << "네임스페이스를 통해 변수를 선언하고 호출합니다. : " << tennis::player << endl;
	return 0;
}

 

 

결과

네임스페이스를 통해 변수를 선언하고 호출합니다. : nadal

 

 

네임스페이스는 다른 네임스페이스 내에서도 정의될 수 있습니다.

또한 C++ 자체의 전역 namespace가 존재합니다. 식별자의 namespace가 없으면 전역으로 포함되어 연산됩니다.

 

 

 

 

 

📌 using 지시자, using 선언


좀 더 간편하게 namespace를 쓸 순 없을까요?

using지시자와 using선언이 있습니다.

 

 

(1) using 지시자

: using 지시자를 이용할 경우, 해당 블록에서는 해당 네임스페이스의 모든 존재를 사용할 수 있습니다.

 

using namespace 네임스페이스 이름;



namespace tennis
{
	string player;
    	int height;
}
using namespace tennis;

위와 같이 선언할 경우, 해당 파일 내에서는 자유롭게 사용할 수 있습니다.

 

 

int main()
{
	player = "federer";
    	cout << "네임스페이스를 통해 변수를 선언하고 호출합니다. : " << player << endl;
	return 0;
}

 

 

결과

네임스페이스를 통해 변수를 선언하고 호출합니다. : federer

 

 

우리가 자주 봤던 이 코드 기억나시나요?

using namespace std;

얘도 네임스페이스의 활용입니다.

 

 

 

 

 

(2) using 선언

: using 선언은 단 하나의 변수 혹은 이름만을 사용할 수 있게 합니다.

 

using 네임스페이스이름::변수명;

 

 

네임스페이스에서 height 변수를 using 선언했습니다.

namespace tennis
{
	string player;
    	int height;
}
using tennis::height;

int main()
{
	height = 100;
    	cout << "네임스페이스를 통해 변수를 선언하고 호출합니다. : " << height << endl;
	return 0;
}

 

결과

네임스페이스를 통해 변수를 선언하고 호출합니다. : 100

 

using 선언한 변수가 아닌 다른 변수를 호출할 경우, 오류가 발생하니 주의하세요!

 

 

 

 

지금까지 네임스페이스 개념과 선언에 대해 알아보았습니다.

고생하셨습니다.