콘텐츠로 이동

스코프

스코프(scope)는 이름과 객체가 보이는 범위를 뜻합니다. 이 장의 규칙들은 이름과 객체의 노출 범위를 가능한 한 좁게 유지하여, 이름 충돌을 줄이고 독자가 추적해야 할 대상을 작게 만드는 데 초점을 둡니다.

다음 하위 주제에서 네임스페이스, 내부 연결, 비멤버·정적 멤버·전역 함수, 지역 변수, 정적·전역 변수, thread_local 변수를 각각 다룹니다.


이해하기 쉽게 설명하기

스코프 규칙의 핵심 질문은 하나입니다: "이 이름이 정말 이 범위까지 보여야 하는가?" 범위를 좁힐수록 이름 충돌 가능성, 의도치 않은 의존, 초기화·소멸 순서 문제가 함께 줄어듭니다.

실무에서 점검할 때는 다음을 확인하세요.

  • 파일 안에서만 쓰는 도우미 함수·변수는 내부 연결(이름 없는 네임스페이스)로 숨겼는가?
  • 지역 변수는 처음 쓰이는 위치에 가깝게, 선언과 동시에 초기화했는가?
  • 전역·정적·thread_local 객체의 초기화·소멸 순서를 설명할 수 있는가? (설명하기 어렵다면 대개 범위가 너무 넓다는 신호입니다.)