이름공간은 말 그대로 특정 영역에 이름을 붙여주기 위한 문법적 요소이다.
#include <iostream>
using namespace std;
namespace BestComImp1
{
void SimpleFunc(void);
}
namespace BestComImp1
{
void llsuzn(void);
}
namespace ProgComImp1
{
void SimpleFunc(void);
}
int main()
{
BestComImp1::SimpleFunc();
return 0;
}
void BestComImp1::SimpleFunc(void)
{
cout << "BestCom이 정의한 함수" << endl;
llsuzn(); //동일 이름공간
ProgComImp1::SimpleFunc(); // 다른 이름공간
}
void BestComImp1::llsuzn(void)
{
cout << "이수진입니다." << endl;
}
void ProgComImp1::SimpleFunc(void)
{
cout << "ProgCom이 정의한 함수" << endl;
}
#include <iostream>
using namespace std;
namespace Parent
{
int num = 1;
namespace SubOne
{
int num = 2;
}
namespace SubTwo
{
int num = 3;
}
}
int main()
{
cout << Parent::num << endl;
cout << Parent::SubOne::num << endl;
cout << Parent::SubTwo::num << endl;
return 0;
}
Parent::num
은 1을 의미
parent::SunOne::num
은 2를 의미
parent::SunTwo::num
은 3을 의미
함수의 범위지정을 생략할 수 있게 함
#include <iostream>
using namespace std;
namespace Hybrid
{
void HybFunc() {
cout << "So Simple Function!" << endl;
cout << "In Namespace Hybrid!" << endl;
}
}
int main() {
using Hybrid::HybFunc; // Hybrid 네임스페이스 안에 있는 HybFunc를 사용하겠다
HybFunc(); // 함수 이름만으로도 사용이 가능하다
return 0;
}
using Hybrid::HybFunc;
- main함수 내에서만 효력이 있음
using namespace std;
- 이름공간 std에 선언된 모든 것에 대해 이름공간 지정의 생략
#include <iostream>
using namespace std;
namespace AAA
{
namespace BBB
{
namespace CCC
{
int num1;
int num2;
}
}
}
int main()
{
AAA::BBB::CCC::num1 = 20;
AAA::BBB::CCC::num2 = 30;
namespace ABC = AAA::BBB::CCC;
cout << ABC::num1 << endl;
cout << ABC::num2 << endl;
return 0;
}
AAA::BBB::CCC와 같은 이름에 별칭을 ABC라고 지정해 줌