C++가 지원하는 각종 요소들(변수, 함수, 클래스)을 한 범주로 묶어주기 위한 문법이다.
네임스페이스를 이용해 소속을 나누면 큰 프로그램을 만들 때 이름이 겹치는 문제를 쉽게 방지할 수 있다.
#include <iostream>
using namespace std;
namespace TEST
{
int data = 100;
void TestFunc(){
cout << "Hello World!";
}
}
int main(){
cout << TEST::data;
TEST::TestFunc();
}
namespace는 소속을 나타내는데 using을 사용하면 namespace를 생략가능하다.
#include <iostream>
using namespace std;
namespace TEST
{
int data = 100;
void TestFunc(){
cout << "Hello World!";
}
}
using namespace TEST;
int main(){
cout << data;
TestFunc();
}
using은 namespace를 선언한 후에 사용 가능하다.
namespace안에 또다른 namespace가 속할 수 있다.
c++에서는 이름이 같은 변수나 함수라도 속해있는 namespace가 다르면 전혀 다른 객체로 인식한다.
#include <iostream>
using namespace std;
namespace TEST1
{
int data = 100;
namespace TEST2
{
int data = 200;
namespace TEST3
{
int data = 300;
}
}
}
int main(){
cout << TEST1::data << endl;
cout << TEST1::TEST2::data << endl;
cout << TEST1::TEST2::TEST3::data << endl;
}
data변수는 모두 이름은 동일하지만 namespace가 다르기 때문에 서로 다른 값을 갖는다.