Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 네임스페이스 중첩 완벽 가이드: 문법부터 실전 예제까지

네, C++에서는 네임스페이스(namespace)를 중첩할 수 있습니다. 하나의 네임스페이스 안에 또 다른 네임스페이스를 정의하면, 관련된 코드들을 계층적으로 그룹화하여 더 체계적인 구조를 만들 수 있습니다.

중첩 네임스페이스 문법

네임스페이스 내부에 다른 네임스페이스를 정의하는 기본 문법은 다음과 같습니다.

namespace namespace_name1 {
    // 코드 선언
    namespace namespace_name2 {
        // 코드 선언
    }
}

중첩 네임스페이스 멤버에 접근하기

중첩된 네임스페이스의 멤버에 접근할 때는 범위 해결 연산자(scope resolution operator, ::)를 사용합니다.

// namespace_name2의 멤버에 접근
using namespace namespace_name1::namespace_name2;
// namespace_name1의 멤버에 접근
using namespace namespace_name1;

실전 예제

아래 예제는 두 개의 네임스페이스를 중첩하여 정의하고, 내부 네임스페이스의 함수를 호출하는 방법을 보여줍니다.

#include <iostream>
using namespace std;
// 첫 번째 네임스페이스
namespace first_space {
    void func() {
        cout << "Inside first_space" << endl;
    }
    // 두 번째(중첩된) 네임스페이스
    namespace second_space {
        void func() {
            cout << "Inside second_space" << endl;
        }
    }
}
using namespace first_space::second_space;
int main () {
    // second_space의 함수가 호출됩니다.
    func();
    return 0;
}

실행 결과

Inside second_space

코드 설명

이 예제에서 주목할 점은 다음과 같습니다.

first_spacesecond_space 모두 같은 이름의 함수 func()를 가지고 있습니다. 하지만 using namespace first_space::second_space; 구문으로 내부 네임스페이스를 지정했기 때문에, main() 함수에서 호출한 func()second_space에 정의된 함수가 실행됩니다.

만약 외부 네임스페이스인 first_space의 함수를 호출하고 싶다면, using namespace first_space;로 선언을 변경하거나 first_space::func();처럼 직접 경로를 명시하면 됩니다.

정리

중첩 네임스페이스는 대규모 프로젝트에서 코드 충돌을 방지하고 모듈별로 논리적인 구조를 유지하는 데 매우 유용합니다. 특히 라이브러리 개발 시 세부 기능을 계층적으로 분류할 때 자주 활용됩니다.