반응형
namespace1.cpp
#include<iostream>
using namespace std;
namespace ComImp1
{
void SimFunc(void)
{
cout<<"BestCom이 정의한 함수"<<endl;
}
}
namespace ComImp2
{
void Simple(void)
{
cout<<"ProgCom이 정의한 함수"<<endl;
}
}
int main(void)
{
ComImp1::SimpleFunc();
ComImp2::SimpleFunc();
return 0;
}
실행결과
BestCom이 정의한 함수
ProgCom이 정의한 함수
"namespace는 이름 공간을 의미를 하는 것이고, 똑같은 프로그램을 각기 다른 사람이 코딩을 하게 된다면은 똑같은 함수가 정의될 수 있는 상황에 그것을 구분하기 위해서 쓰인다"
예제에서 사용된 연산자 ::을 가르켜 "범위 지정 연산자(scope resolution operator)"라 하며, 그 이름이 의미하듯이 이름 공간을 지정할 때 사용하는 연산자이다.
이름 공간 기반의 함수 선언과 정의의 구분
#include<iostream>
using namespace std;
namespace ComImp1
{
void SimpleFunc(void);
}
namespace ComImp2
{
void SimpleFunc(void);
}
int main(void)
{
ComImp1::SimpleFunc();
ComImp2::SimpleFunc();
return 0;
}
void ComImp1::SimpleFunc(void)
{
cout<<"BestCom이 정의한 함수"<<endl;
}
void ComImp2::SimpleFunc(void)
{
cout<<"ProgCom이 정의한 함수"<<endl;
}
실행결과
BestCom이 정의한 함수
ProgCom이 정의한 함수
이름 공간의 중첩
namespace Parent
{
int num=2;
namespace SubOne
{
int num=3;
}
namespace SubTwo
{
int num=4;
}
}
int main(void)
{
cout<<"Parent num:"<<Parent::num<<endl;
cout<<"SubOne num:"<<Parent::SubOne::num<<endl;
cout<<"SubTwo num:"<<Parent::SubTwo::num<<endl;
return 0;
}
실행결과
Parent num: 2
SubOne num: 3
SubTwo num: 4
'study > C++' 카테고리의 다른 글
malloc & free를 대체하는 new & delete (0) | 2020.05.20 |
---|---|
참조자(Reference) (0) | 2020.05.19 |
자료형 bool (0) | 2020.05.19 |
매개변수의 디폴트 값(Default Value) (0) | 2020.05.19 |
함수 오버로딩(Function Overloading) (0) | 2020.05.19 |