[C++] 네임스페이스와 ::연산자 - 코드 구조화와 충돌 방지의 핵심

2023. 8. 22. 16:19프로그래밍 언어/C++\C

네임스페이스(namespace)는 코드 내에서 충돌을 방지하고 모듈화를 도와주는 기능이다. 네임스페이스를 통해 다른 라이브러리나 클래스에서 동일한 이름의 요소들이 충돌하는 것을 방지할 수 있다.

 

네임스페이스의 선언은 다음과 같은 방식으로 이루어진다.

namespace MyNamespace {
    // 네임스페이스에 포함될 요소들
    int myFunction();
    class MyClass {
        // 클래스 멤버들
    };
}

네임스페이스 안에서 선언된 요소들은 MyNamespace::과 같은 형태로 접근할 수 있고, MyClass는 MyNamespace::MyClass로 접근할 수 있다.

 

네임스페이스는 중첩되게 생성하여 더욱 구조화된 네임스페이스를 만들 수 있다.

namespace Company {
    namespace Department {
        // 중첩된 네임스페이스 내의 요소들
    }
}

특정 네임스페이스에 속하지 않은 요소들은 전역네임스페이스에 속한다. C++ 표준 라이브러리 STL은 std라는 네임스페이스에 수많은 요소들을 지원한다.


문자열을 공부하다보면 std::string::npos과 같은 문장이 나온다. 여기서 주의해야 할 점은 string은 네임스페이스가 아니라 std 네임스페이스 안에 위치한 클래스라는 것이다. 

 

이처럼 ::연산자는 네임스페이스나 클래스의 범위를 지정할 때 사용되는 연산자이다.