class Ejemplo {
int Ejemplo :: ejemplo2;
Ejemplo :: Ejemplo (void)
void Ejemplo :: print (void)
main()
# include <iostream.h>
La salida de este programa es:
int ejemplo1;
static int ejemplo2;
public:
Ejemplo (void);
void print(void);
};
{
ejemplo1 = 1;
ejemplo2 = 1;
}
{
ejemplo1++;
ejemplo2++;
cout << "ejemplo1 = " << ejemplo1 << '\n';
cout << "ejemplo2 = " << ejemplo2 << '\n'; ;
}
{
Ejemplo primero, segundo;
primero.print();
segundo.print();
}
ejemplo1 = 2
ejemplo2 = 2
ejemplo1 = 2
ejemplo2 = 3
Una variable declarada static (ejemplo2) es una variable externa y sólo 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 definición de clase, la variable sólo es declarada. La declaración dice
que la variable existirá y le da un nombre, pero la definición es la que realmente
define un lugar para guardarla en la memoria del ordenador. Por definición, una variable
puede ser declarada en la header file, pero no definida allí, sino fuera de ella,
normalmente en el fichero de implementación.
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
función, print, que incrementa el valor de las variables internas y a continuación
las imprime.