//在Globals.hpp
中const int SINE_MIN = 0; // only CONSTANT
const int SINE_MAX = 1; // only CONSTANT
static const int COS_MIN = 1; // STATIC CONSTANT
static const int COS_MAX = 0; // STATIC CONSTANT
Static Const& amp; Const变量?
如果在类中声明了相同的变量。
class SomeClass
{
const int SINE_MIN = 0; // only CONSTANT
const int SINE_MAX = 1; // only CONSTANT
static const int COS_MIN = 1; // STATIC CONSTANT
static const int COS_MAX = 0; // STATIC CONSTAN
}
我希望在运行时将值设置为COS_MAX = getCosMaxFromFile()
,之后不应更改它,因此将其设为Const
。
答案 0 :(得分:2)
首先,如果您将某些内容声明为const
,则表示您无法更改它。所以没有你不能在运行时分配给它。但是,您可以在初始化中调用您的函数:
static const int COS_MAX = getCosMaxFromFile();
现在,对于static
和非static
变量之间的区别,它取决于其中定义了变量:如果它在文件中定义 - 全局范围或功能本地范围。如果它在文件全局范围内,则static
变量仅在当前translation unit中可用(即仅在该源文件中)。如果它是一个函数局部变量,那么static
变量不会像其他(非静态)局部变量那样在调用之间失去它的值。
如果在头文件中定义了全局static
变量,则意味着包含头文件的每个源文件都将定义该变量。但它不会导致链接器错误,因为该变量在每个转换单元外都不可见。