2010-02-24 13 views

Respuesta

24

variables miembro estáticas no están asociadas con cada objeto de la clase. Es compartido por todos los objetos. Si se inicializa en ctor, significa que está tratando de asociarse con una instancia particular de la clase. Como esto no es posible, no está permitido.

5

Supongo que se refiere a usarlo en una lista de inicialización para un constructor. Un miembro de datos estáticos se comparte entre todas las instancias de la clase. Puede ser inicializado una vez (por definición de inicialización), por lo que no tendría sentido inicializarlo para cada instancia.

Sin embargo, podría asignarle un valor (o mutar el valor existente) en el cuerpo del constructor. O si el miembro de datos es una constante, puede inicializarlo estáticamente fuera del constructor.

0

variable estática no se puede definir dentro de ningún método (incluso si el método es estático), no obstante, puede definir la variable estática fuera del constructor y asignar un valor dentro del constructor. Pero al hacerlo, la variable será accesible para toda la clase.

0

1) Las variables estáticas son propiedad de la clase y no del objeto. 2) Cualquier variable estática se inicializa antes de crear cualquier objeto.

  • Es por eso que el compilador no permite definir la variable estática dentro del constructor ya que se llamará al constructor cuando se crea un objeto.
+0

En realidad, las variables 'estáticas' pueden ser objetos en sí mismas ... –

0

Una lista de inicialización de miembros denota inicialización. Un miembro static ya está inicializado al comienzo de su programa (antes de main). Si pudiera hacer lo que está sugiriendo, estaría "reinicializando" el miembro static con cada objeto que cree, pero los objetos solo se inicializan una vez.

En su lugar, si desea cambiar el valor de un objeto después de haberlo inicializado, debe asignarle .

Cuestiones relacionadas