Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

네임 스페이스(Namespace) 본문

C & C++/C++ Basic

네임 스페이스(Namespace)

snd-snd 2019. 9. 21. 20:15

네임 스페이스

 

각종 요소들[변수, 함수, 클래스 등]을 하나의 범주로 묶어주기 위한 문법이다. (소속, 구역의 개념)

눈에 보이지 않지만 전역 변수 또는 전역 함수의 경우 전역 네임 스페이스에 소속되어 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <iostream>
using namespace std;
namespace TEST //
{
int nData = 10,
char ch = 'A',
void TestFunc() { ... }
} // TEST TEST .
int main()
{
cout << TEST::nData << endl;
cout << TEST::ch << endl;
TEST::TestFunc();
return 0;
/* TEST
'::' . */
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

using 선언

 

특정한 네임 스페이스에 있는 요소들을 현재의 코드에서 동일한 검색 대상 순위에 올려주는 역할을 한다.

이는, TEST라는 네임 스페이스가 있다면, 'TEST::요소' 형식이 아닌 '요소'로서 바로 사용할 수 있게 한다.

 

위 코드를 예를 들자면 이미 std 네임 스페이스가 using 선언이 되어있는데,

보는것처럼 std 네임 스페이스 소속인 cout 객체를 'std::cout'가 아닌 'cout'으로 호출하는 것을 볼 수 있다.

 

 

 

네임 스페이스는 사용시 유의사항이 존재한다.

 

먼저 동일한 요소를 가지고 있는 네임 스페이스가 존재하는 것은 가능하다.

이를 전제로 할 때 범위지정 연산자를 이용해 네임 스페이스 소속의 요소를 사용하는 것도 문제되지 않는다.

 

다만 문제가 되는 점은 using 선언을 통해 전역으로 가져올 때, 네임 스페이스 자체는 오류가 발생하지 않는다.

하지만 사용자 코드에서 전역화된 네임 스페이스의 요소를 사용할 때 모호성에 빠질 수 있다.

 

'C & C++ > C++ Basic' 카테고리의 다른 글

변환 생성자(Conversion Constructor)  (0) 2019.09.22
복사 생성자(Copy Constructor)  (0) 2019.09.22
클래스(Class)  (0) 2019.09.21
디폴트 매개변수(Default Parameter)  (0) 2019.09.21
C → C++  (0) 2019.09.16
Comments