首页 > 代码库 > const对象默认为文件的局部变量
const对象默认为文件的局部变量
const 定义的对象为一个常量不能被修改。这个想必大家都知道。
这里只是介绍const对象默认为文件的局部变量
当一个非const变量在一个c或cpp文件中为全局时,它在整个程序中都可以访问。我们在其他的c或cpp文件要用到这个变量,只需要在文件做合适的声明就能使用。
例如:
main.cpp 中全局变量bufsize
#include <iostream>
using namespace std;
extern void function();
int bufsize = 100;
int main()
{
function();
return 0;
}
function.cpp中声明了bufsize
#include <iostream>
using namespace std;
extern int bufsize;
void function()
{
cout<<"function.cpp***bufsize----------"<<bufsize<<endl;
}
编译运行:
g++ -o main main.cpp function.cpp
./main
function.cpp***bufsize----------100 function.cpp能访问到main.cpp中bufsize
现在我们将bufsize设置成const对象
main.cpp
#include <iostream>
using namespace std;
extern void function();
const int bufsize = 100;
int main()
{
function();
return 0;
}
function.cpp内容不变
编译运行:
g++ -o main main.cpp function.cpp
/tmp/ccdvo28n.o: In function `function()‘:
function.cpp:(.text+0xb): undefined reference to `bufsize‘
collect2: ld returned 1 exit status
function.cpp中bufsize没有定义
稍作改进:
main.cpp
#include <iostream>
using namespace std;
extern void function();
extern const int bufsize = 100;
int main()
{
function();
return 0;
}
function.cpp不变
编译运行:
g++ -o main main.cpp function.cpp
./main
function.cpp***bufsize----------100运行正常
总结:
定义的非const全局变量,它属于整个程序,其他程序要访问只要相应的声明即可;
定义的const全局变量,属于定义的文件,如果想要整个程序都能访问,则要指定const变量为extern。