• [C++] namespace의 개념과 간단한 실습

    2023. 9. 4.

    by. KAEY


    🎶식별자를 더 잘 구분하여 오류를 최소화하기 위한 기능

    🎶프로젝트가 커지고, 여러 파일, 여러 개발자가 나눠서 개발을 하게 되면

    🎶식별자(변수, 함수 등의 이름)의 이름이 같아져 충돌이 일어 날 확률이 높아짐.

    🎶이런 충돌이 발생하지 않기 위해 만들어진 것이 namespace 개념

     

     

    기본 문법

    namespace (namespace 이름) {
    
    }
    
    using namespace 네임스페이스 이름;
    	// namespace내에 있는 모든 요소의 접근을 풀어 줌.
        
    using 네임스페이스::식별자;
    	// namespace내에 특정 요소의 접근을 풀어 줌

     


    간단한 실습

     

    ✅ 'seoul' 을 의미하는 namespace 를 생성하고, 그 안에 지역변호와 랜드마크를 의미하는 변수를 각각 생성.

    ✅ 'busan' 을 의미하는 namespace 를 생성하고, 그 안에 지역변호와 랜드마크를 의미하는 변수를 각각 생성.

    ✅ 지역번호와 랜드마크에 해당 하는 변수 이름은 서울과 부산의 namespace가 동일해야 한다.

    ✅ main 함수에서 namespace 에 있는 변수에 원하는 값을 할당하고 출력하라.

    ✅ busan namespace 는 using 을 응용하여 출력하라.

     

     


    풀이

     각각 namespace 를 생성하고, 그 안에 지역변호와 랜드마크를 의미하는 변수를 각각 생성.

    namespace seoul {
    	string area_num;
    	string lendmark;
    
    	void printAll() {
    		cout << area_num << " 그리고 서울 " << lendmark << endl;
    	}
    }
    namespace busan {
    	string area_num;
    	string lendmark;
    
    	void printAll() {
    		cout << area_num << " 그리고 부산 " << lendmark << endl;
    	}
    }

     

    ✨왜 지역 번호는 int 가 아니라 string 으로 했나요?

     → 앞의 번호가 02 이지만, 출력할 때 02와 2는 서로 다르기에 정상적으로 출력되지 않았기 때문입니다.

     

     

     

    ✅ main 함수에서 namespace 에 있는 변수에 원하는 값을 할당하고 출력하라.

    	seoul::area_num = "02";
    	seoul::lendmark = "노원구";
    	seoul::printAll();

     

     

    ✅ busan namespace 는 using 을 응용하여 출력하라.

    	area_num = "052";
    	lendmark = "돼지국밥";
    	printAll();

     

     

    출력 화면

     

     


    🎉해당 글의 내용은 "포스코 x 코딩온 스마트 팩토리 과정 수업" 에서의 수업 자료 및 실습 과제 등에서 일부 발췌되어 작성 되었습니다.


    댓글 (비로그인 댓글 허용하지 않습니다.)