namespace
- 각종 요소들(변수, 함수, 클래스 등)을 한 범주로 묶어주기 위한 문법
- 변수 또는 함수 이름의 중복을 방지하고자 등장
- ::(범위 지정 연산자)
#include <iostream>
namespace TEST
{
int g_nData = 100;
void TestFunc(void)
{
std::cout << "TEST::TestFuct()" << std::endl;
}
}
int main(void) {
TEST::TestFunc();
std::cout << TEST::g_nData << std::endl;
return 0;
}
using
- std 네임스페이스를 using 예약어로 선언하여 생략 가능
#include <iostream>
using spacename std;
int main(void) {
cout << "hi" << endl;
return 1;
}
namespace 중첩
namespace Test {
int g_nData = 100;
namespace DEV {
int g_nData = 200;
}
}
int main() {
std::cout << g_nData << std::endl; // error
std::cout << Test::g_nData << std::endl; // 100
std::cout << Test::DEV::g_nData << std::endl; // 200
}
namespace 다중 정의
#include <iostream>
int Func(void)
{
return 0;
}
namespace TEST
{
int Func(void)
{
return 0;
}
}
int main(void)
{
Func(); // 묵시적 전역
::Func(); // 명시적 전역
TEST::Func();
return 0;
}
#include <iostream>
int Func(void)
{
return 0;
}
namespace TEST
{
int Func(void)
{
return 0;
}
}
using namespace TEST;
int main(void)
{
Func(); // error(ambiguous)
return 0;
}