0

我总是在源文件中使用未命名的命名空间来代替静态,但我遇到了一些代码,它只是在源文件中定义它。

// Source file foo.cpp

const float someFloat = 3.2f;

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

在未命名的命名空间上这样做有什么缺点吗?

4

1 回答 1

2

在这种情况下,可以使用其他.cpp文件extern const float someFloat;来拉入该变量,如果变量是静态的或在未命名的命名空间中,这是不可能的。

有人可能会争辩说,使用的可能性extern是一个缺点,因为它可能会在某些情况下破坏封装。

于 2013-10-22T11:50:09.347 回答