B. 네임스페이스
1. 네임스페이스 기초
a. 네임스페이스(namespace)란?
🌟 내부 식별자에 사용될 수 있는 유효 범위를 제공하는 선언적 영역을 의미
b. 네임 스페이스가 필요한 이유
C++에서는 자료형을 구분하기 위한 다양한 내부 식별자를 가지고 있는데
프로그램이 복잡해지고 여러 라이브러리가 포함될수록 내부 식별자 간에 충돌할 가능성도 커짐
👉 따라서 이름 충돌 문제를 네임 스페이스로 해결함
c. 전역 네임스페이스(global namespace)
전역 네임스페이스라고 하는 파일 수준의 선언 영역이 존재
일반적으로 식별자의 네임스페이스가 명시되지 않으면, 전역 네임스페이스로 자동 포함
또한, C++ 표준 라이브러리 타입과 함수들은 std 네임스페이스 또는 그 속에 중첩된 네임스페이스에 선언되어 있음
d. 사용자 네임스페이스 정의하기
namespace 키워드를 사용해 사용자가 새로운 네임스페이스를 정의할 수 있음
- 전역 위치, 다른 네임스페이스 내에서 정의할 수 있음
- 블록 내부에서는 정의 ❌
- 기본적으로 외부 연결
- 일반적으로 헤더 파일에서 정의, 언제나 새로운 이름을 추가할 수 있도록 개방
⏳ 예제 : namespace.h
namespace kang
{
void Display(); // 함수의 원형
int count; // 변수의 선언
}
namespace kim
{
double display; // 변수의 선언
int count; // 변수의 선언
}
e. 네임스페이스로의 접근
🌟 범위 지정 연산자(::, scope resolution operator)를 사용, 해당 이름을 특정 네임스페이스로 제한
⏳ 예제 : namespace.cpp
#include "namespace.h"
...
kang::count = 4;
kim::display = 3.14;
kim::count = 100;
...
2. using 지시자(directive)
a. 간소화된 네임스페이스로의 접근
네임스페이스에 속한 이름을 사용할 때마다 매번 범위 지정 연산자를 사용하여 이름을 제한하는 것은 매우 불편하고 가독성이 안좋음
따라서 불편함을 해소하기 위해 using 지시자를 사용함
b. using 지시자란?
🌟 명시한 네임스페이스에 속한 이름을 모두 가져와 범위 지정 연산자를 사용하지 않고 모두 사용
- 전역 범위에서 사용된 using 지시자 : 해당 네임스페이스의 모든 이름을 전역적으로 사용
- 블록 내에서 사용된 using 지시자 : 해당 블록에서만 해당 네임스페이스의 모든 이름을 사용
📘 문법
using namespace 네임스페이스이름;
b. using 선언
🌟 단 하나의 이름만을 범위 지정 연산자를 사용하지 않고도 사용
using 지시자와 마찬가지로 using 선언이 나타나는 선언 영역에서만 해당 이름을 사용
📘 문법
using 네임스페이스이름::이름;
출처 : http://www.tcpschool.com/cpp/cpp_scope_namespace
'프로그래밍 언어 > C++' 카테고리의 다른 글
[자료형(data type)] C++ 파생형 클래스 2 : 생성자와 소멸자 (+39강, 41강) (0) | 2023.09.13 |
---|---|
[자료형(data type)] C++ 파생형 클래스 1 : 클래스의 기본 (0) | 2023.09.13 |
C++ 범위 : 유효범위와 연결 (0) | 2023.09.13 |
[자료형(data type)] C++ 파생형 공용체와 열거체 총정리 (0) | 2023.09.13 |
[자료형(data type)] C++ 파생형 구조체 총정리 (0) | 2023.09.13 |