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。




原文地址:https://www.cnblogs.com/yxysuanfa/p/6756525.html