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)
.....
'C++' 카테고리의 다른 글
[C++] C++ name decoration 혹은 name mangling (0) | 2012.11.13 |
---|---|
[C/C++] switch의 jump table (0) | 2012.11.07 |
[C++] 디폴트 생성자, 복사 생성자, 소멸자는 존재하는가? (0) | 2012.11.07 |
[C++] 어셈으로 보는 함수 호출(1) (0) | 2012.11.06 |
[C++] 헤더는 선언이지 정의가 아니다. (0) | 2012.10.10 |