全局变量中的静态const与const

时间:2018-06-09 00:19:21

标签: c++ static const

在Foo.h中,我将1个全局变量定义为

static const int g_var = 4;

然后我将此头文件包含在许多不同的头文件和.cpp文件中。如果我只是写

int g_var = 4;

我得到错误“g_var已经定义了”,这是可以理解的,所以我不得不添加静态,所以它只是初始化一次。但是使用

const int g_var = 4; 

解决了“已定义的”问题。我读到这是因为const全局变量默认具有内部链接。那么关键字static在这里是多余的吗?

1 个答案:

答案 0 :(得分:1)

Static关键字是一个访问说明符。如果在函数内部使用static,它允许变量存在于函数作用域之外,并在不同函数调用之间保留其值。 如果在函数外部定义静态变量或常量,则其范围将限制为该特定文件。 使用常量,static关键字只需优化complilation。