2009-11-07 24 views
11

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

15

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.

+2

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

4

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.

1

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).

Cuestiones relacionadas