gpt4 book ai didi

c++ - 在 C++ 中,在成员函数中定义 Static Const 变量有什么好处?

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:43 25 4
gpt4 key购买 nike

我正在使用一个类,其构造函数在实现中声明并初始化一个静态常量变量。这不是该类的数据成员。我理解在这种情况下使用 const,但是使用 static 有什么好处呢?

我知道 static const 全局常量由该类的所有实例共享。构造函数中的变量也会发生这种情况吗?

此外,为什么不像其他两个那样在全局范围内定义它?这就是我通常定义常量的地方。

示例代码:

#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);

}

最佳答案

无论函数被调用多少次,静态变量只会构造一次。

因此,如果您在函数内定义常量并且函数被多次调用,那么为了减少每次调用函数时构造此对象的成本,您可以将其设为静态变量 (当它是一个常量时主要有用,否则你可能最终会改变这个值并且它很快就会变得困惑)。

对于你的第二个问题,这是因为你不希望其他人能够访问变量“SOME_VAR”的值。赋予全局范围意味着任何人都可以访问它。

link提供了一个很好的例子,说明局部静态变量有时比全局静态变量更有用。

关于c++ - 在 C++ 中,在成员函数中定义 Static Const 变量有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35898110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com