- variables
- variables miembro de clase
- funciones
- funciones miembro de clase
- clases
Variables estáticas:
Una variable declarada static permanece durante toda la ejecución del programa. Si es declarada dentro de una función, la variable permanecerá aunque se salga de ella.
#include <iostream>
int miFuncion(int);
using namespace std;
int main(void)
{
int i;
for(i=0;i<=10;i++)
{
cout<<"Valor actual de la variable estatica: "<<miFuncion(i)<<endl;
}
return 0;
}
int miFuncion(int _i)
{
static int valor;
if(_i >=2)
valor +=1;
return valor;
}
La salida de este programa sería:
El valor guardado en la variable estática se mantine hasta que finaliza el programa.
La salida de este programa sería:
Valor actual de la variable estatica: 0
Valor actual de la variable estatica: 0
Valor actual de la variable estatica: 1
Valor actual de la variable estatica: 2
Valor actual de la variable estatica: 3
Valor actual de la variable estatica: 4
Valor actual de la variable estatica: 5
Valor actual de la variable estatica: 6
Valor actual de la variable estatica: 7
Valor actual de la variable estatica: 8
Valor actual de la variable estatica: 9El valor guardado en la variable estática se mantine hasta que finaliza el programa.
Variables miembro de clase estáticas:
Al declarar una variable miembro como static, estará disponible para todas las instancias de esa clase, e incluso se podrá acceder a ella sin instanciar la clase.
//Programa principal
#include <iostream>
#include "miclase.h"
using namespace std;
int miClase::variable_estatica = 0;
int main(void)
{
miClase ClaseNueva,OtraClase;
ClaseNueva.variable_estatica = 10;
cout<<"Valor actual de la variable static de miClase es "<<
OtraClase.variable_estatica<<endl;
return 0;
}
//Archivo miClase.cpp #include "miclase.h" miClase::miClase() { otra_variable = 5; }
//Archivo miClase.h #ifndef MICLASE_H #define MICLASE_H class miClase { private: int otra_variable; public: miClase(); static int variable_estatica; }; #endif // MICLASE_H
Si compilamos y ejecutamos este programa la salida sería:
Valor actual de la variable static de miClase es 10
Aunque estamos pidiendo el valor de la variable_estatica del objeto OtraClase, nos imprime 10, que es el valor que le asigna ClaseNueva a la variable. Solo existe una variable_estatica que es compartida por todos los objetos creados de la clase miClase.