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.