:: ADVANCE ::

[C/C++] C++ 기능 2 본문

language/C | C++

[C/C++] C++ 기능 2

KSJ14 2014. 9. 16. 00:52
반응형

추가된 함수 기능 2

 

4. namespace

 

 사용자 정의 명칭 규칙 중 같은 범위의 명칭끼리는 당연히 중복되지 않아야 한다. 예를 들어 input이라는 이름으로 변수를 선언했다면, 같은 이름으로 다른 변수를 선언할 수 없을 뿐더러 함수나 타입의 이름으로도 사용할 수 없다.
짧은 프로그램에서 명칭을 작성하는 것은 어려운일이 아니지만, 프로그램이 복잡해 지고 규모가 커질수록 더 많은 명칭이 필요하기 때문에 고유의 이름을 붙이는 일이 점점 더 어려워진다.
 만약, count라는 변수를 쓰고 싶은데, 다른 팀과 협업 중 다른 개발자가 이 명칭을 전역 변수로 쓰고 있거나 외부 라이브러리에서 다른 의미로 사용 중이라면, 이 이름을 쓸 수 없게 된다. 이처럼 프로젝트에서 명칭 충돌을 피하기 위해 언어 차원에서 근본적인 해결책을 제시하는 것이 바로 이름공간(namespace)입니다.
이 기능은 비교적 최근에 추가되었으며, 말 뜻 그대로 명칭들이 기억되는 영역을 의미합니다.
사용자 정의 명칭이 다른 이름공간에 소속되었다면, 이름이 중복되어도 상관 없습니다.

 

 

5. using 지시자(Directive)

 

 using namespace 다음에 이름공간을 지정하는 방식이며, 지정한 이름공간의 모든 명칭을 이 선언이 있는 영역으로 가져와 소속 지정 없이 명칭을 바로 사용할 수 있도록 한다.
using namespace std;
이 명령문의 뜻은 이름공간 std에 선언된 모든 것에 대해 이름공간 지정의 생략을 명령한다는 것.

 

 

6. using 선언(Declaration)

 이름공간의 이름 중 한 개만 소속 지정 없이 사용하고자 할 때 선언합니다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>  
using namespace std;  
  
namespace person  
{  
    int value;  
    double score;  
    void func()  
    {  
        cout<<"이름은 홍길동입니다"<<endl;  
    }  
}  
  
using person::value;  
int main()  
{  
    value=3;  
    person::score=1.2345;  
    person::func();  
    return 0;  
}  

 

 

7. 이름공간의 중첩

 이름공간은 다른 이름공간안에 삽입될 수 있다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>  
using namespace std;  
  
namespace parent  
{  
    int num=2;  
    namespace subOne  
    {  
        int num=3;  
    }  
      
    namespace subTwo  
    {  
        int num=4;  
    }  
}  
  
int main()  
{  
    cout<<parent::num<<endl;  
    cout<<parent::subOne::num<<endl;  
    cout<<parent::subTwo::num<<endl;  
    return 0;  

 

반응형

'language > C | C++' 카테고리의 다른 글

[C++] Class  (0) 2015.07.13
[C/C++] C++ 기능 3  (0) 2014.09.16
[C/C++] C++ 기능 1  (0) 2014.09.16
[C/C++] C와 C++  (0) 2014.09.16
[C++] Efficient C++  (1) 2014.09.15
Comments