Si tiene datos para una clase que se modificará y debe conservarse durante todo el programa, pero solo se utiliza en una función de miembro, ¿es preferible convertir esa variable en una variable estática local de la clase? rutina en la que está o convertirlo en miembro de la clase?variable estática frente a miembro
Respuesta
La pregunta no es "¿se usarán los datos en todo el programa", sino que "si haces dos objetos de esta clase, ¿quieres que compartan esta información?" Si es así, hazlo estático. Si no, no.
Yo diría que en la mayoría de los casos, nunca se debe usar una variable estática local, y en su lugar usar una variable de miembro estática. Entonces la pregunta degenera a si esa variable debe ser compartida entre las instancias de la clase o no.
Declarar una variable local como estática significa que su método ahora tiene estado, separado del estado del objeto. Puede llevar a muchos errores al mantener este código (como la implementación del constructor de copia, la asignación, la serialización) y al leerlo (comportamiento del método poco claro).
Evita el uso de locales estáticos a menos que tengas una buena razón (la única que se me ocurre es la implementación singlete singleone).
- 1. función no estática frente a función estática y variable
- 2. Función miembro que devuelve una variable estática
- 3. variable miembro python de instancia funciona como variable miembro, y algunos funciona como variable estática
- 4. Funciones de miembro no miembro frente a miembro en Python
- 5. Funciones no miembro no miembro frente a funciones privadas
- 6. C++ miembro función de acceso privado variable estática?
- 7. Variable global estática utilizada por la función miembro en línea
- 8. Encuadernación a una variable miembro
- 9. const frente a sólo lectura estática
- 10. Variable condicional frente a semáforo
- 11. inicialización de variable estática java
- 12. Cómo hacer referencia a una variable de miembro de constante estática en PHP
- 13. variable estática global vs variable estática en la función?
- 14. C++ Referencia indefinida a la variable estática
- 15. Interferencia estática variable ASP.net?
- 16. Conversión implícita de puntero a miembro de datos frente a no miembro
- 17. ¿Inicialización de variable estática?
- 18. Variable estática de plantilla
- 19. C++ variable estática
- 20. Propiedad frente a variable de instancia
- 21. C tenedor frente a la variable global
- 22. Singleton frente a la Preferencia estática y el defecto
- 23. Creación de una referencia estática frente a un conjunto unitario
- 24. ¿Por qué tienes que inicializar una variable de miembro estática de C++?
- 25. una variable estática en c
- 26. ¿Cómo declarar una variable miembro constante estática de una clase que implica algunos cálculos simples?
- 27. INotifyPropertyChanged para la variable estática
- 28. Herencia variable estática en Python
- 29. variable estática final en Java
- 30. ¿La inicialización de la variable de miembro estática de C++ es segura para subprocesos?
Gracias. Olvidé que incluso las variables estáticas locales en las funciones miembro de la clase son compartidas por todos los objetos de esa clase. – Anonymous