2013-10-22 2 views
0

정적 대신 소스 파일 내에서 이름없는 네임 스페이스를 사용하지만 원본 파일에서 정의한 일부 코드를 발견했습니다.소스 파일의 네임 스페이스 및 로컬 변수

// Source file foo.cpp 

const float someFloat = 3.2f; 

Foo::Foo() { 
    std::cout << someFloat << std::endl; 
} 

이름없는 네임 스페이스에 비해 단점이 있습니까?

+0

* * *를 정의 하시겠습니까? 일반적인 전역 변수? –

답변

2

이 경우 다른 .cpp 파일은 extern const float someFloat;을 사용하여 해당 변수를 가져올 수 있습니다. 변수가 정적이거나 이름없는 네임 스페이스 인 경우에는 가능하지 않습니다.

extern을 사용할 가능성은 특정 상황에서 캡슐화가 중단 될 수 있으므로 단점이 될 수 있습니다.