[C++] 이름공간

C++ 2019. 12. 6. 17:09

#includeusing namespace std;
namespace aaa{

void x(void);
}

namespace aaa{
void y(void);
}

namespace bbb{
void x(void);
}

int main(){
aaa::x(); // aaa 이름공간에 x 함수 호출
return 0;
}

void aaa::x(void){
cout << "1" << endl; // 출력
y(); // aaa 이름공간에 y 함수출력
bbb::x(); // bbb 이름공간에 x 함수출력
}

void aaa::y(void){
cout << "2" << endl;
}

void bbb::x(void){
cout << "3" << endl;
}

// 같은 함수를 쓰면 충돌이 나기 때문에 구분해주는게 이름공간이다.
// 매개변수도 같기 때문에 오버로딩이 안될때 사용한다.
// ::는 범위지정 연산자로 이름공간 지정할 때 사용함

* 중첩의 경우
namespace aaa{
namespace bbb{
void x(void);
}
}

int main(){
aaa::bbb::x();
return 0;
}

void aaa::bbb::x(){
cout << "a" << endl;
}

* using으로 이름공간 사용하기

#include
using namespace std;
namespace aaa{

void x(void){
cout << "xxxx" << endl;
}
}

int main(){
// aaa::x(); // 보통 1개 출력시 방법이다.
using aaa::x; // using 이름공간::함수; 이렇게 써주면 보통 함수처럼 사용가능함.
x();
return 0;
}

* 전역변수와 지역변수 구분하기
int a = 20;
namespace aaa{

void x(void){
int a = 10;
cout << a << ' ' << ::a << endl; // a는 지역변수, ::a는 전역변수
}
}

int main(){
aaa::x();
return 0;
}

* 이름공간 중첩 사용하기

#include
using namespace std;
namespace aaa{
namespace bbb{
namespace ccc{

void x(void){
cout << "xxxx" << endl;
}
}
}
}

int main(){
namespace ddd = aaa::bbb::ccc; // 한번에 접근하도록 줄여서 사용이 가능하다.
ddd::x();
return 0;
}

'C++' 카테고리의 다른 글

[C++] 파일분할 방법  (0) 2019.12.06
[C++] 인라인 함수  (0) 2019.12.06
[C++] 디폴트값 의미  (0) 2019.12.06
[C++] 함수 오버로딩  (0) 2019.12.06
[C++] dll 연결 방법  (0) 2019.12.06
블로그 이미지

ryancha9

https://blog.naver.com/7246lsy

,