我有一个程序分成两个源文件:
例子.cpp
#include <iostream>
class A {
public:
A(int x) {
::std::cout << "In A(" << x << ")\n";
}
};
static A first(1);
static A second(2);
示例__ main.cpp
int main(int argc, const char *argv[])
{
return 0;
}
该程序的输出是否保证为:
In A(1)
In A(2)
在所有平台和编译器上?如果是这样,它在标准中的什么地方这么说?如果我使用命名空间first
并second
出现在不同的命名空间中,这有关系吗?如果它们不是静态的并且我使用的是匿名命名空间呢?