Nagie's DevStory

[CPP] 18. 네임스페이스 (Namespace) 본문

Programming/C++

[CPP] 18. 네임스페이스 (Namespace)

Nagie 2023. 10. 21. 17:25
728x90
//네임스페이스 사용 예시
#include <iostream>

// "my_namespace"라는 사용자 정의 네임스페이스를 정의
namespace my_namespace {

    int x = 10; // my_namespace 내에서 x라는 이름은 이 네임스페이스에 속합니다.

    void printX() {
    
        std::cout << "x from my_namespace: " << x << std::endl;
    }
}

// 다른 네임스페이스에는 동일한 이름의 변수나 함수가 있어도 충돌하지 않습니다.
namespace another_namespace {

    int x = 20;

    void printX() {
    
        std::cout << "x from another_namespace: " << x << std::endl;
    }
}

int main() {

    // 네임스페이스에 속한 변수와 함수 사용
    my_namespace::printX();         // my_namespace의 함수 호출
    another_namespace::printX();    // another_namespace의 함수 호출

    // 네임스페이스 내의 변수에 접근
    std::cout << "x from my_namespace: " << my_namespace::x << std::endl;
    std::cout << "x from another_namespace: " << another_namespace::x << std::endl;
}

 

네임스페이스(namespcae)는 C++에서 사용되는 일종의 소속 개념이며

코드의 충돌을 방지하고 구조화하는 데 도움을 주는 문법이다.

이걸 직역해 '이름공간'이라고 많이들 말하는 데 개인적으로 코드의 '소속'을 정한다는 게 더 정확한 표현이라 생각한다.

회사로 예시를 들어 '홍길동'이라는 이름을 가진 사람이 두 명이 있고 각각 A팀과 B팀에 소속되어 있다고 가정한다면

그냥 '홍길동' 씨라고 불렀을 때 누굴 이야기하는지 모호해지지만 

'A팀'의 '홍길동' 씨 또는 'B팀'의 '홍길동' 씨라고 부르게 되면 명확해지기 때문이다.

코드 역시 협업하게 되면 사람들 생각이 다 비슷하기 때문에 똑같은 이름을 가진 함수가 생길 확률이 높고

이에 따라 충돌이 생기거나 하는 불상사를 겪을 수도 있기에 네임스페이스로 소속을 정하자는 개념이 생긴 것이다.

728x90
Comments