我总是在源文件中使用未命名的命名空间代替静态,但我遇到了一些只在源文件中定义它的代码。
// Source file foo.cpp
const float someFloat = 3.2f;
Foo::Foo() {
std::cout << someFloat << std::endl;
}
在未命名的命名空间上执行此操作是否有任何不利之处?
答案 0 :(得分:2)
在这种情况下,其他一些.cpp
文件可以使用extern const float someFloat;
来提取该变量,如果该变量是静态的或在未命名的命名空间中,这是不可能的。
有人可能会说使用extern
的可能性是一个缺点,因为它可能在某些情况下破坏封装。