gratiszona

CLASES STATIC EN LENGUAJE C

Ejemplo:
# include <iostream.h>
class Ejemplo {
int ejemplo1;
static int ejemplo2;
public:
Ejemplo (void);
void print(void);
};
int Ejemplo:: ejemplo2;
Ejemplo:: Ejemplo (void) {
ejemplo1 = 1;
ejemplo2 = 1;
}
void Ejemplo:: print (void) {
ejemplo1++;
ejemplo2++;
cout << 'ejemplo1 = ' << ejemplo1 << '\n';
cout << 'ejemplo2 = ' << ejemplo2 << '\n'; ;
}
main() {
Ejemplo primero, segundo;
primero.print();
segundo.print();
}
La salida de este programa es:
ejemplo1 = 2
ejemplo2 = 2
ejemplo1 = 2
ejemplo2 = 3
Una variable declarada static (ejemplo2) es una variable externa y solo puede existir una copia de esa variable. Todos los objetos de esta clase (en este caso, primero y segundo) comparten una misma copia de esta variable, que es global a estos objetos.
En la definicion de clase, la variable solo es declarada. La declaracion dice que la variable existira y le da un nombre, pero la definicion es la que realmente define un lugar para guardarla en la memoria del ordenador. Por definicion, una variable puede ser declarada en la cabecera del fichero, pero no definida alli, sino fuera de ella, normalmente en el fichero de implementacion.
El constructor inicializa las dos variables internas a 1 cada vez que se crea un objeto. Para mostrar que ejemplo2 es compartida por todos los objetos de esta clase, definimos una funcion, print, que incrementa el valor de las variables internas y a continuacion las imprime.
Anterior: clases array de objetos
Siguiente: clases puntero interno