Static关键字保存函数返回的值?

时间:2013-11-15 20:54:03

标签: c++ static const

我正在编写的程序中有几个函数,它使用一个我需要用非常慢的函数计算的值。每次重新运行程序时,此值都会更改,因此我不能只存储静态值。以下是一个例子。

void this_gets_called_frequently()
{
    static int value = slow_function();

    //do stuff with the above value
}

我的主要问题不在于程序不工作,而是整洁。我真的不想初始化一个全局变量并将值存储在该变量中,因为它一旦计算就不会改变。以上面显示的方式使用static关键字只调用上面的函数计算一次吗?在那里添加const关键字会有帮助吗?

谢谢大家,这回答得非常完美!

3 个答案:

答案 0 :(得分:2)

是的,本地static变量的初始化最多只会发生一次(虽然我记得有些编译器版本可能会遇到多线程问题)。 const不是必需的,在这种情况下,它主要是可读性和品味。

答案 1 :(得分:0)

  

以上面显示的方式使用static关键字只调用上面的函数计算一次吗?

是的,首次调用this_gets_called_frequently

  

在那里添加const关键字会有帮助吗?

没有。但是为文档值添加const

答案 2 :(得分:0)

如果在编译器中可用,则可以使用C ++ 11中的线程局部变量。如果您使用的是Windows,则可以使用类似的TlsAlloc API。自Win32诞生以来它就在那里。