본문 바로가기

C++ IDE를 위한 과정

C++ namspace

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