静态关键字保存函数返回的值
Static keyword saves value returned by function?
我在编写的程序中有几个函数,它们使用了一个我需要用非常慢的函数计算的值。 每次重新运行程序时,此值都会更改,因此我不能只存储静态值。 下面是一个示例。
void this_gets_called_frequently()
{
static int value = slow_function();
//do stuff with the above value
}
我在这里的主要问题不是程序无法正常工作,而是整洁。 我真的不想初始化一个全局变量并将值存储在其中,因为它一旦计算就不会改变。 以上面显示的方式使用 static 关键字是否只调用上面的函数进行一次计算? 添加的 const 关键字会有所帮助吗?
谢谢大家,这个问题得到了完美的回答!
是的,局部static
变量的初始化最多会发生一次(尽管我记得某些编译器版本在这里可能存在多线程问题)。 const
不是必需的,在这种情况下,这主要是可读性和品味的问题。
以上面显示的方式使用 static 关键字是否只调用上面的函数进行一次计算?
是的,在第一次调用this_gets_called_frequently
添加的 const 关键字会有所帮助吗?
不。但添加const
文档价值。
可以使用 C++11 中的线程局部变量(如果它们在编译器中可用)。如果您使用的是Windows,则可以使用类似的TlsAlloc
API。自 Win32 诞生以来,它就在那里。
相关文章:
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 接收和返回函数指针的函数指针的类型?
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- C++函数链返回函数
- 返回函数指针的函数的签名
- 由于值返回函数中的错误,程序无法编译.它说未声明的标识符
- 非常量引用返回函数在常量值返回函数上用作 r 值
- 如何在 C++ 中从 void 返回函数访问变量
- 返回函数中带有 2 个可选 ctor 的对象
- 如何在 c++ 中返回函数的结构向量
- 返回 C++ 函数中的引用
- 使用向量时,当返回函数更改时,无法看到输出
- 如何在递归中使用返回函数
- 返回函数模板的类型C++作为第二个模板参数
- 为什么静态指针返回函数中有一个"静态"键?
- 递归返回函数,在特殊情况下不返回
- 从类返回函数
- 从类成员函数返回函数指针
- 从返回函数中推断不存在的模板参数