Za šta se koristi static u programiranju kakv utjecaj ima na varijablu i funkciju?
Static je višeznačan. Primjerice, ako je riječ o statičkoj varijabli funkcije onda takva varijabla djeluje kao globalna tj. ne gubi svoju vrijednost nakon poziva funkcije.
void funkcija(){
static int i = 0;
cout << ++i << " ";
}
int main(){
for(int k = 1; k <= 10; k++)
funkcija(); // 1 2 3 ... 10
return 0;
}
Slično, statička varijabla-članica neke klase je varijabla koja je dijeljenja među svih instancama neke klase.
class A{
public:
static int n;
};
int A::n = 0; // inicijalizacija statičkog člana
int main(){
A obj1, obj2;
cout << obj1.n << " " << obj2.n << endl; // 0 0
obj1.n = 1;
cout << obj1.n << " " << obj2.n << endl; // 1 1
obj1.n = 2;
cout << obj1.n << " " << obj2.n << endl; // 2 2
return 0;
}
Statička varijabla-članica mora biti inicijalizirana prije upotrebe.