기본적인 활용
namespace test
{
int x;
double sss;
}
using namespace test;
int main()
{
test::sss = 20;
cout << sss;
return 0;
}
- test라는 namespace를 만든다.
- using namespace test;를 사용하여 sss를 test를 지시하는 test::를 사용하지 않고 sss를 사용한다.
using namespace test; //test 전체를 지시자 없이 사용가능
using test::sss; //test의 sss만 지시자 없이 사용가능
사용할 수 없는 변수
using namespace test;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
double sss;
test::sss = 20;
cout << sss; //오류! sss가 두개가 존재
return 0;
}
이미 test를 가져와서 sss에 대한 것이 있기 때문에 이 공간에서는 다시 sss를 만들 수 없다.
using의 사용
//using namespace std;
using std::cin;
using std::cout;
using std::endl;
using namespace std를 사용하여 std전체를 가져오는 것 보다 필요한 std의 있는 것을 사용하는 것을 권장한다.
단어의 압축
namespace one_of_them;
namespace oot = one_of_them;
namespace MEF = myth::elements::fire;
using MEF::flame;
위와 같이 namespace를 활용하여 긴 문자를 줄여서 사용하거나 안에 있는 내용을 빠르게 한 단어로 표현할 수 있다.
이름을 명명하지 않은 이름 공간의 활용
namespace
{
int ice; //정적 기억 공간, 내부 링크
int band;
}
int main()
{
...
}
//--------위와 같은 활용---------
static int ice; //정적 기억 공간, 내부 링크
static int band;
int main()
{
...
}
- 내부링크로 정적 기억 공간으로 변수를 사용하려면 이름 공간 접근법에서 활용하는 방법은 위와 같은 방식이다.
- 이름을 생략한 이름 공간은 using 지시자가 뒤에 있는 것처럼 전역변수와 같이 활용된다.
- 그래서 using선언을 명시적으로 사용할 수 없다.
- 함수도 using을 사용할 수 있는데 명시된 이름이 오버로딩된 것이 있다면 모든 그 이름의 함수를 불러들인다.
'C++ > Basic' 카테고리의 다른 글
[C++] 클래스의 초기화, const 멤버 함수 (0) | 2021.06.20 |
---|---|
객체 지향 프로그래밍 (0) | 2021.06.18 |
[C++] new연산자 (0) | 2021.06.17 |
[C++] static과 외부변수 선언 (0) | 2021.06.17 |
[C++] mutable 사용법 (0) | 2021.06.16 |