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 를 감싸 놓으면 이러한 충돌을 줄일 수 있으며, 이 외에도 연관도가 높은 코드끼리 명시적으로 프로그램의 설계를 나눌수도 있습니다.