Compartir a través de


Miembros de datos estáticos (C++)

Las clases pueden contener datos estáticos del miembro y el miembro funciona.Cuando se declara un miembro de datos como Estática, sólo una copia de los datos se mantiene para todos los objetos de la clase.(Para obtener más información, vea Funciones miembro static.)

Los miembros de datos estáticos no forman parte de objetos de tipo de clase determinado; son objetos independientes.Como resultado, la declaración de un miembro de datos estático no se considera una definición.Declare el miembro de datos en el ámbito de la clase, pero la definición se realiza en el ámbito de archivo.Estos miembros estáticos tienen vinculación externa.Esto se ilustra en el siguiente ejemplo:

// static_data_members.cpp
class BufferedOutput
{
public:
   // Return number of bytes written by any object of this class.
   short BytesWritten()
   {
      return bytecount;
   }

   // Reset the counter.
   static void ResetCount()
   {
      bytecount = 0;
   }

   // Static member declaration.
   static long bytecount;
};

// Define bytecount in file scope.
long BufferedOutput::bytecount;

int main()
{
}

En el código anterior, el miembro bytecount en la clase BufferedOutput, pero debe definir fuera de la declaración de clase.

Los miembros de datos estáticos pueden hacer referencia a ellos sin hacer referencia a un objeto de tipo de clase.El número de bytes escritos con los objetos de BufferedOutput puede obtenerse como sigue:

long nBytes = BufferedOutput::bytecount;

Para que el miembro estático existe, no es necesario que existe cualquier objeto de tipo de clase.Los miembros estáticos también pueden tener acceso a ellos mediante los operadores miembro-selección (. y – >).Por ejemplo:

BufferedOutput Console;

long nBytes = Console.bytecount;

En el caso anterior, la referencia al objeto (Console) no se evalúa; el valor devuelto es el del objeto estático bytecount.

Los miembros de datos estáticos están sujetos a las reglas de acceso a miembros de clase, lo que acceso privado a los miembros de datos estáticos solo se permite para las funciones y los amigos de miembro de clase.estas reglas se describen en Control de acceso a miembros.La excepción es que los miembros de datos estáticos deben definirse en el ámbito del archivo sin importar sus restricciones de acceso.Si el miembro de datos explícitamente a inicializar, un inicializador se debe proporcionar la definición.

El nombre de clase no califica al tipo de un miembro estático.Por tanto, el tipo de BufferedOutput::bytecount es long.

Vea también

Referencia

Clases, estructuras, uniones y