'Programming Language/C && C++'에 해당되는 글 1건

  1. 2018.09.12 [C++] Namespace
2018. 9. 12. 19:27




Namespace

같은 반의 같은 이름을 가진 두 사람이 같은 반의상황을 생각해 보자우리가 그들을 확실하게 구별해야 할 때마다 우리는 그들이 다른 지역에 살거나 그들의어머니의 이름아버지의 이름 등과 같은 그들의 이름과 함께 몇 가지 추가 정보를 사용해야 할 것이다.

C++ 응용프로그램에서도 동일한 상황이 발생할 수 있다예를 들어, a() 함수가 있는 코드를 작성하고 동일한 함수를 가진다른 라이브러리가 있을 수 있다이제 컴파일러는 코드 내에서 어떤 버전의 a() 함수를 참조하는지 알 수 있는 방법이 없다.

네임스페이스는 이러한 어려움을 극복하도록 설계되었으며유사한 기능클래스변수 등을 다른 라이브러리에서 사용할수 있는 동일한 이름으로 구별하기 위한 추가 정보로 사용된다네임스페이스를 사용하여 이름이 정의되는컨텍스트를 정의할 수 있다본질적으로 네임스페이스는 범위를 정의한다.

 

[정의]

1
2
3
namespace namespace_name { 
    //code
}
cs


네임 스페이스의 변수와 함수 사용

[namespace_name]::[변수 혹은 함수]


[예제1]

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
#include <iostream>
using namespace std;
 
//A namespace
namespace spaceA { 
    int a;
 
    void output()
    {
        cout << "SPACE A!" << endl;
    }
}
 
//B namespace    
namespace spaceB {
    int a;
 
    void output()
    {
        cout << "SPACE B!" << endl;
    }
}
 
 
void main()
{
    spaceA::output();    //spaceA의 output()
    spaceB::output();    //spcaeB의 output()
    
}
cs


<Using 지시어>

Using을 사용하면 네임 스페이스의 이름을 명시하지 않고도 네임 스페이스의 모든 이름을사용할 수 있다.


[예제2]

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
#include <iostream>
using namespace std;
 
//A namespace
namespace spaceA { 
    int a;
 
    void output()
    {
        cout << "SPACE A!" << endl;
    }
}
 
//B namespace    
namespace spaceB {
    int a;
 
    void output()
    {
        cout << "SPACE B!" << endl;
    }
}
 
using namespace spaceB;    //namespaceB 사용
void main()
{
    output();    //spcaeB의 output()
    
}
cs


Posted by PAYJAY