我正在使用一个其构造函数在实现中声明并初始化静态const变量的类。这不是该类的数据成员。我了解在这种情况下使用const,但是使用static有什么好处呢?
我知道该类的所有实例都共享静态const全局常量。构造函数内部的变量也会发生这种情况吗?
另外,为什么不像其他两个那样在Global范围内对此进行定义?那就是我通常定义常量的地方。
示例代码:
#includes...
static const int GLOBAL_CONST1 = 100;
static const double GLOBAL_CONST2 = 1.0;
SomeClass::SomeClass()
:
theDataMember1 (),
theDataMember2 (),
...
{
static const double SOME_VAR = 0.01; // Why not declare this globally?
theDataMember1 = SomeIncludedClass(SOME_VAR);
}
Run Code Online (Sandbox Code Playgroud)
无论调用该函数多少次,静态变量都只会构造一次。
因此,如果您在函数内部定义常量并且多次调用该函数,那么为减少每次调用该函数时构造此对象的成本,您可以将其设为静态变量(主要是在使用常量时,否则,最终更改此值,很快就会搞砸了)。
对于第二个问题,这是因为您不希望其他人能够访问变量“ SOME_VAR”的值。提供全球范围意味着任何人都可以访问它。
该链接提供了一个很好的示例,说明局部静态有时比全局静态变量有用的情况。
| 归档时间: |
|
| 查看次数: |
4535 次 |
| 最近记录: |