La parola chiave statica consente di risparmiare valore restituito dalla funzione?

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

  •  20-12-2019
  •  | 
  •  

Domanda

Ho diverse funzioni in un programma che sto scrivendo che utilizza un valore che devo calcolare con una funzione molto lenta.Questo valore cambierà ogni volta che il programma è relegato, quindi non riesco a memorizzare un valore statico.Di seguito è riportato un esempio.

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

    //do stuff with the above value
}
.

Il mio problema principale qui non è uno dei programmi che non funziona, preferibilmente.Non voglio davvero inizializzare una variabile globale e memorizzare il valore in questo, dal momento che non cambierà una volta calcolato.Usererebbe la parola chiave statica nel modo mostrato sopra solo chiama la funzione sopra per essere calcolata una volta?Una parola chiave cost aggiunta nell'aiuto?

Grazie a tutti, questo è stato risposto perfettamente!

È stato utile?

Soluzione

Sì, un'inizializzazione della variabile static locale accadrà al massimo una volta (anche se ricordo alcune versioni del compilatore potrebbero avere problemi con il multithreading qui). const non è richiesto, in questo caso è principalmente una questione di leggibilità e gusto.

Altri suggerimenti

.

Usando la parola chiave statica nel modo mostrato sopra chiama solo la funzione sopra per essere calcolata una volta?

Sì, sulla prima invocazione di this_gets_called_frequently

.

Una parola chiave cost aggiunta lì aiuta?

no.Ma aggiungi const per il valore della documentazione.

L'uso può utilizzare le variabili locali del filo da C ++ 11, se sono disponibili nel compilatore.Se sei su Windows, è possibile utilizzare API TlsAlloc simile.È lì dall'alba di Win32.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top