如果变量被声明为 extern 但不是全局变量,它也会接收相同的初始化处理。例如:namespace A { extern int x; int x;} 这个非全局变量将被初始化为零。所有命名空间范围的变量都会接收到这种处理。
extern仅是一个声明。变量是否被初始化取决于定义。 此外,变量的值取决于初始化类型。 C ++标准定义了3种初始化类型: 零初始化 默认初始化 值初始化 C++03标准8.5/5恰当地定义了每个术语的含义。 好文章阅读: 定义和声明有什么区别?