Статическое ключевое слово сохраняет значение, возвращаемое функцией?

StackOverflow https://stackoverflow.com//questions/20010408

  •  20-12-2019
  •  | 
  •  

Вопрос

В программе, которую я пишу, есть несколько функций, которые используют значение, которое мне нужно вычислить с помощью очень медленной функции.Это значение будет меняться каждый раз при повторном запуске программы, поэтому я не могу просто сохранить статическое значение.Ниже приведен пример.

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

добавлен ключевое слово POST, помогите?

Нет.Но добавьте const для значения документации.

Использование может использовать локальные переменные потока от C ++ 11, если они доступны в вашем компиляторе.Если вы находитесь в Windows, вы можете использовать аналогичные API TlsAlloc.Это там с момента заря Win32.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top