¿Qué son las variables estáticas?

¿Para qué están diseñadas las variables estáticas? ¿Cuál es la diferencia entre la int estática y la int?

La palabra clave static tiene cuatro usos separados, solo dos de los cuales están estrechamente relacionados:

  • estático en el ámbito global y del espacio de nombres (aplicado tanto a las variables como a las funciones) significa enlace interno
    • Esto es reemplazado por espacios de nombres sin nombre y no está relacionado con el rest
    • en particular, otros tienden a implicar algún tipo de singularidad, pero el enlace interno significa lo contrario : puede tener muchos objetos con el mismo nombre, siempre que cada uno tenga un enlace interno y solo tenga uno por unidad de traducción.
  • los miembros de datos estáticos se “comparten” entre todas las instancias de la clase
    • es más como si fueran independientes de cualquier instancia de clase
    • Esto a veces se agrupa con métodos estáticos.
  • Los métodos estáticos no “operan” en una instancia actual
    • no este puntero puede llamar sin una instancia
  • Las variables locales estáticas (en funciones) persisten en el scope de cada llamada de función

Tanto los miembros de datos estáticos como las variables locales estáticas pueden convertirse en un estado global oculto, y deben usarse con cuidado.

Ahora que dos están estrechamente relacionados? No son los dos miembros de la clase, la advertencia sobre el estado global lo deja de lado. Puede considerar a los miembros de datos estáticos como variables locales estáticas, donde las funciones a las que pertenecen son todos los métodos de la clase, en lugar de una sola función.

He encontrado muchas preguntas relacionadas , pero, sorprendentemente, no hay duplicados.

Las variables estáticas se inicializan en el segmento de datos (en x86; se modifican según corresponda para otras architectures) en lugar de en la stack. Persisten durante la vida útil del progtwig en lugar de vaporizarse una vez que están fuera del scope.

Se puede hacer referencia a un miembro estático sin una instancia.

Consulte la sección “Miembros estáticos” aquí: http://www.cplusplus.com/doc/tutorial/classes2/