Se si dispone di dati per una classe che verrà modificata e deve essere mantenuta in tutto il programma, ma è utilizzata solo in una funzione membro, è preferibile rendere tale variabile una variabile statica locale del routine in cui si trova o ne fa un membro della classe?variabile statica vs. membro
risposta
La domanda non è "i dati verranno utilizzati in tutto il programma", ma piuttosto "se si creano due oggetti di questa classe, vuoi che condividano questi dati?" Se sì, rendilo statico. Se no, non farlo.
Direi che nella maggior parte dei casi, non si dovrebbe mai utilizzare una variabile statica locale e utilizzare invece una variabile membro statica. Quindi la domanda degenera se tale variabile deve essere condivisa tra le istanze di classe o meno.
Dichiarare una variabile locale come statica significa che il metodo ora ha stato, separato dallo stato dell'oggetto. Può portare a molti errori quando si mantiene questo codice (come implementazione del costruttore di copia, assegnazione, serializzazione) e durante la lettura (comportamento del metodo non chiaro).
Evitare l'uso di locals statici a meno che non si abbia una buona ragione (l'unica cosa a cui posso pensare è l'implementazione singletone a thread singolo).
- 1. variabile statica globale vs variabile statica in funzione?
- 2. Funzione membro che restituisce una variabile statica
- 3. la variabile membro python di istanza funziona come variabile membro e alcuni funzionano come variabile statica
- 4. graal hasOne vs variabile membro diretto
- 5. La funzione membro C++ accede alla variabile statica privata?
- 6. Variabile globale statica utilizzata dalla funzione membro inline
- 7. Perché si _have_ per inizializzare una variabile membro statica C++?
- 8. inizializzazione variabile statica java
- 9. funzione statica e variabile statica e variabile
- 10. Metodo globale vs funzione vs classe statica
- 11. Asp.net - Caching vs variabile statica per memorizzare un dizionario
- 12. Inizializzazione della variabile membro shared_ptr, nuova vs make_shared?
- 13. Dealer variabile statica Python
- 14. Variabile statica C++
- 15. InotifyPropertyChanged per variabile statica
- 16. Variabile statica in Tcl
- 17. membro Const impilare vs heap
- 18. Funzioni membro non membro vs Python
- 19. Funzione membro statica e sicurezza thread
- 20. statica costante dichiarazione di membro della classe
- 21. Funzione ricorsiva con variabile statica
- 22. indefinito riferimento alla variabile statica
- 23. Perché mantenere una variabile statica?
- 24. variabile statica all'interno funzione template
- 25. iniezione guice in variabile statica
- 26. Tipo tratto: controlla se la variabile membro di riferimento è statica o meno
- 27. È una variabile membro statica comune a tutte le istanze generiche C#?
- 28. Posso dichiarare una variabile statica all'interno della funzione membro statico in Java?
- 29. Come dichiarare una variabile membro costante statica di una classe che comporta alcuni semplici calcoli?
- 30. Constructor non imposta variabile membro
Grazie. Ho dimenticato che anche le variabili statiche locali nelle funzioni dei membri della classe sono condivise da tutti gli oggetti di quella classe. – Anonymous