:: ADVANCE ::
[C/C++] C++ 기능 2 본문
추가된 함수 기능 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 |