관리 메뉴

Kim's Programming

네임스페이스(namespace)의 이용 본문

Programming/Cplusplus

네임스페이스(namespace)의 이용

Programmer. 2016. 3. 7. 22:07

namespace의 사용


namespace는 변수명의 충돌을 막기위해서 사용합니다. 다음 소스의 경우를 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
 

namespace ABC
{
    int i;
}
namespace DEF
{
    double i;
}
 
void main()
{
    int i;//지역 변수
    ABC::i;//네임스페이스 ABC 변수
    DEF::i;//네임스페이스 DEF 변수
}
cs


전부 같은 i입니다. 6번째, 10번째, 그리고 15번째 모두 같은 i라고 선언이 되어있습니다. 하지만 다르게 쓸 방법이 필요하다면? 이런경우에 namespace를 쓰게 됩니다. 다 같은 i지만 namespace를 사용함으로써 같으면서 다른 i들이 됩니다.



namespace의 규칙


namespace는 다음과 규칙들을 따라서 만들어야합니다.


    1. 네임스페이스는 다른 명칭과 중복되어서는 안됩니다.

    2. 네임스페이스는 반드시 전역 영역에 선언해야합니다. 지역 네임 스페이스는 허가되지 않습니다.

    3. 네임스페이스는 네임스페이스 끼리 중첩이 가능합니다.

    4. 네임스페이스는 항상 개방이 되어있기때문에 여러번 나누어 명칭을 선언할 수 있습니다.


      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      #include<iostream>
       
      int i;//전역 변수
      namespace ABC
      {
          int i;
      }
      namespace DEF
      {
          double i;
      }
      namespace ABC
      {
          int a, b;
      }
      void main()
      {
          ABC::a;
          ABC::b;
          ABC::i
      }
      cs


    5. 네임 스페이스는 이름을 가지지 않을 수 도 있습니다 이름을 가지지 않는 네임스페이스는 전역 변수와 같습니다. 또한 사용시에 소속을 밝힐 필요도 없습니다. 이는 외부 정적 변수와 성격이 동일한데 static은 c의 방식이고 이름없는 네임스페이스는 C++의 방식입니다.



'Programming > Cplusplus' 카테고리의 다른 글

C++에서의 다양한 Casting 방법들  (0) 2018.02.01
C++ - 클래스 상속(2/3)  (0) 2015.10.12
C++ - 클래스 상속(1/3)  (0) 2015.09.22
C++ - 연산자 오버로딩(3/3)  (0) 2015.09.21
C++ - 연산자 오버로딩(2/3)  (0) 2015.09.20