Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 31
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

네임 스페이스(Namespace) 본문

C & C++/C++ Basic

네임 스페이스(Namespace)

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

네임 스페이스

 

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

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

 

#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 소속의 요소들을 사용하려면 소속이름과
    범위지정 연산자 '::'를 이용해 사용할 수 있다. */
}

 

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