728x90
반응형
이번 포스팅에서는 저번부터 사용하고 있던 namespace에 관해서
같이 공부해봅시다.
namespace
- 식별자를 더 잘 구분하여 오류를 최소화하기 위한 기능
- 프로젝트가 커지고, 여러 파일, 여러 개발자가 나눠서 개발을 하게 되면 식별자(변수, 함수 등)의 이름이 같아져 충돌이 일어날 확률이 높아짐
- 이런 충돌이 발생하지 않기 위해 만들어진 것이 namespace 개념
namespace
namespace (namespace 이름){
식별자 이름
}
using namespace 네임스페이스 이름;
// namespace내에 있는 모든 요소의 접근을 풀어 줌.
using 네임스페이스::식별자;
// namespace내에 특정 요소의 접근을 풀어 줌.
예시
namespace ns_test1 {
intnum = 0;
voidprint() {
cout<<"hello"<<endl;
}
}
usingnamespace ns_test1;
using ns_test1::num;
실습.namesoace 사용해보기
- 'seoul'을 나타내는 namespace를 만들고 그 안에 '지역번호', '랜드마크'을 의미하는 변수를 각각 만드세요.
- 'busan' 을 나타내는 namespace를 만들고 그 안에 '지역번호', '랜드마크' 을 의미하는 변수를 각각 만드세요.
- '지역번호' 와 '랜드마크'을 의미하는 변수의 이름은 'seoul' namespace 와 'busan' namespace 가 동일해야 합니다.
- main 함수 안에서 위의 namespace에 있는 변수에 원하는 값을 할당하고 출력하도록 하세요.
- busan namespace는 using 사용해보기
//실습 26
namespace seoul {
int local_num = 02;
string landmark = "경북궁";
}
namespace busan {
int local_num = 051;
string landmark = "해운대";
}
using namespace busan;
int main() {
cout << "서울 지역번호 : " << seoul::local_num << endl;
cout << "서울 랜드 마크 : " << seoul::landmark << endl;
cout << endl;
cout << "부산 지역번호 : " << local_num << endl;
cout << "부산 랜드마크 : " << landmark << endl;
return 0;
}
마무리
실습 처럼 namespace에 저장된 내용은 따로 선언없이는 사용이 불가능하거나 동일한 이름의 식별자의 값으로 출력되는 것을 확인 할 수있습니다.
저희는 이와 비슷한 것을 git에서 이미 사용했습니다. 바로 branch죠 namespace는 C++에서의 작은 규모의 branch를 생성하는 것입니다.
그러니 협업을 할 때에는 namespace를 주로 사용하여 자신이 작성한 코드가 협업자를 방해하지 않도록 하고, 또 협업자가 선언한 식별자로 인해 자신의 변수값이 재활당 되는 경우를 배제하시면 됩니다
오늘도 같이 공부해주신 모든 분들감사드립니다!!!!
오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

반응형
'C++ IDE를 위한 과정' 카테고리의 다른 글
C++ call by 기능 (0) | 2025.02.24 |
---|---|
C++ 포인터 AND 동적배열 (0) | 2025.02.24 |
C++ 구조체 VS 클래스, getter setter, 상속 (0) | 2025.02.12 |
C++ 클래스 & this pointer (0) | 2025.02.11 |
C++ 함수 def선언 (0) | 2025.02.10 |