별빛의 낙하지 :: [C++] const 객체는 기본적으로 파일에 지역적이다.

const 객체는 기본적으로 파일에 지역적이다.

  const가 아닌 변수를 전역 사용 범위에서 정의하면 프로그램 전체에서 접근할 수 있다.  한 파일에서 const가 아닌 변수를 정의하고(적절히 선언했다고 가정하면)  다른 파일에서 그 변수를 사용할 수도 있다.



// file_1.cc

int counter; // 정의

// file_2.cc

extern int counter; // file_1의 counter을 사용한다.

++counter;     // file_1에 정의한 counter을 증가시킨다.


다른 변수와 달리(다른 방법을 사용하지 않고) const 변수를 전역 사용 범위에 선언하면 객체를 정의한 파일에 지역적이 된다.  그 변수는 해당 파일에만 존재하며, 다른 파일에서는 접근할 수 없다.


반면에 extern을 사용하면 프로그램 전체에서 const 객체에 접근할 수 있다.

// file_1.cc

// 다른 파일에서 접근할 const 변수를 정의하고 초기화한다.

extern const int bufSize = fcn();

// file_2.cc

extern const int bufSize;     // file_1의 bufSize를 사용한다.

// file_1에 정의한 bufSize를 사용한다.

for(int index = 0; index != bufSize; ++index)

.....