Nagie's DevStory
[CPP] 18. 네임스페이스 (Namespace) 본문
728x90
//네임스페이스 사용 예시
#include <iostream>
// "my_namespace"라는 사용자 정의 네임스페이스를 정의
namespace my_namespace {
int x = 10; // my_namespace 내에서 x라는 이름은 이 네임스페이스에 속합니다.
void printX() {
std::cout << "x from my_namespace: " << x << std::endl;
}
}
// 다른 네임스페이스에는 동일한 이름의 변수나 함수가 있어도 충돌하지 않습니다.
namespace another_namespace {
int x = 20;
void printX() {
std::cout << "x from another_namespace: " << x << std::endl;
}
}
int main() {
// 네임스페이스에 속한 변수와 함수 사용
my_namespace::printX(); // my_namespace의 함수 호출
another_namespace::printX(); // another_namespace의 함수 호출
// 네임스페이스 내의 변수에 접근
std::cout << "x from my_namespace: " << my_namespace::x << std::endl;
std::cout << "x from another_namespace: " << another_namespace::x << std::endl;
}
네임스페이스(namespcae)는 C++에서 사용되는 일종의 소속 개념이며
코드의 충돌을 방지하고 구조화하는 데 도움을 주는 문법이다.
이걸 직역해 '이름공간'이라고 많이들 말하는 데 개인적으로 코드의 '소속'을 정한다는 게 더 정확한 표현이라 생각한다.
회사로 예시를 들어 '홍길동'이라는 이름을 가진 사람이 두 명이 있고 각각 A팀과 B팀에 소속되어 있다고 가정한다면
그냥 '홍길동' 씨라고 불렀을 때 누굴 이야기하는지 모호해지지만
'A팀'의 '홍길동' 씨 또는 'B팀'의 '홍길동' 씨라고 부르게 되면 명확해지기 때문이다.
코드 역시 협업하게 되면 사람들 생각이 다 비슷하기 때문에 똑같은 이름을 가진 함수가 생길 확률이 높고
이에 따라 충돌이 생기거나 하는 불상사를 겪을 수도 있기에 네임스페이스로 소속을 정하자는 개념이 생긴 것이다.
728x90
Comments