extern 关键字不应该简单地“屏蔽”编译器吗?这是我无法理解为什么没有错误的代码。
struct A {
int a;
};
class B {
static A x;
public:
void f() { x.a=0; }
};
extern A B::x; // not allocated.
main() {
B z;
z.f();
}
如您所知,静态成员应该手动实例化。但是,我添加了 extern 关键字,这意味着它实际上并未分配。它编译得很好很奇怪!