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 선언한 변수가 아닌 다른 변수를 호출할 경우, 오류가 발생하니 주의하세요!
지금까지 네임스페이스 개념과 선언에 대해 알아보았습니다.
고생하셨습니다.
'♣ C++' 카테고리의 다른 글
[C++] 생성자(constructor)와 소멸자(destructor) (0) | 2022.07.01 |
---|---|
[C++] 클래스(class) 개념 및 선언 (plus. this 포인터) (0) | 2022.06.30 |
[C++] 자유 변수, 레지스터 변수, 정적 변수 ft. 유효 범위 (0) | 2022.06.27 |
[C++] 인라인(inline)함수 와 매크로(define)함수 (0) | 2022.06.24 |
[C++] 함수 Basic - 참조자, 디폴트 인수, 오버로딩 (0) | 2022.06.24 |