Qaupot Blog
Software Engineering, Trip

102. Scope and Namespace

🕐 Fri, 14 Feb 2014 09:00:00 GMT 🕓 Tue, 24 Aug 2021 09:01:00 GMT

Scope

직역하면 "범위, 영역" 입니다. C++에서는 Scope 라는 개념이 매우 중요하게 사용됩니다. Scope 를 표시하는 문법은 :: 입니다.

Namespace

C++에서는 이름이 지정된 영역을 만들 수 있습니다. 이를 Namespace 라고 합니다.

#include <iostream>

namespace Qaupot
{
    int number = 0;
}

int number = 1;

int main(int argc, char** argv)
{
    printf("%d\n", number);
    printf("%d\n", Qaupot::number);
}
1
0

전역 범위에 Qaupot 라는 Namespace 를 만들고, number 라는 전역 변수를 추가했습니다. 그리고 일반적인 전역 범위내에 number 라는 전역 변수를 만들었습니다.

두 변수 모두 전역 범위에 존재하지만, 프로그래밍 문법 상 Qaupot라는 이름을 붙여 공간을 갈라 놓았습니다. 호출할 때 Qaupot 라는 범위 안에 있는 number 라는 표현으로 Qaupot::number 를 사용했습니다.

Namespace 에는 자료형 선언(클래스, 구조체 등) 및 변수 선언이 위치할 수 있습니다.

Namespace 는 같은 이름이 정의되는 것을 피하기 위한 방법 입니다.

다른 코드를 가지고 와서 사용하려고 할 때, 이미 작성하셨던 코드에 같은 이름이 있다면 둘 중 하나는 이름을 고쳐야 하며, 이는 상당한 작업량을 유발할 뿐만 아니라 수정 중에 실수할 가능성이 매우 높습니다.

그렇기 때문에 코드를 Namespace 를 감싸 놓으면 이러한 충돌을 줄일 수 있으며, 이 외에도 연관도가 높은 코드끼리 명시적으로 프로그램의 설계를 나눌수도 있습니다.

이 블로그는 개인 블로그입니다. 게시글은 오류를 포함하고 있을 수 있지만, 저자는 오류를 해결하기 위해 노력하고 있습니다.
게시글에 별도의 고지가 없는 경우, 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 라이선스를 따릅니다.

This blog is personal blog. published posts may contain some errors, but author doing efforts to clear errors.
If post have not notice of license, it under creative commons Attribution-NonCommercial-NoDerivatives 4.0.