在全局作用域中定义非const变量时,它在整个应用程序中都可以访问,如果是const变量那么它只是在当前文件中的局部变量。
我们知道如果要一个变量在其他文件中也可使用的话我们可以用extern标识变量即可,默认非const型的变量为extern
1.cpp
extern int number;//声明了一个number变量,他会在其他模块寻找定义
int main(){
cout<<number<<endl;//number是100
}
2.cpp
int number=100;//定义了一个全局变量,默认为extern
如果我们用const的话
2.cpp
const int number=100;//这个行吗?不行const之后默认不是extern而是文件的局部变量,所以要加extern
extern const int number=100;//这个ok
1.cpp
extern const int number;//我们知道const必须初始化,但是extern声明了就不用初始化了
int main(){
cout<<number<<endl;//number是100
}
原文:http://www.cnblogs.com/woge/p/4023206.html