Citat:
itf: Što će mi statička varijabla u klasi
pr:
//Klasa.h
class Klasa{
public:
Klasa(){// konstruktor
broj_Klasa_Objekta ++;
obicana_varijabla++;
}
static int broj_Klasa_objekta; // staticka varijabla
int obicna_varijabla;// obicna
};
// recimo Klasa.cpp moze i u .h ali van tjela klase
// definicija staticke varijable
int Klasa::broj_Klasa_objekta = 1;// postavljanje na vrijdenost 1 ,ako se ne varam po
//defaultu je 0 ali mora biti definirana
//unutar nekog maina:
...
cout << Klasa::broj_Klasa_objekta ; // ispisat ce 1
//primjeti da jos uvjek nemamo instacu klase Klasa
Klasa k1;// instanca klase Klasa
Klasa k2;// instanca klase Klasa
Klasa k3;// instanca klase Klasa
cou << k1.broj_Klasa_objekta ; // ispisat ce 2
cou << k2.broj_Klasa_objekta ; // ispisat ce 3
cou << k3.broj_Klasa_objekta ; // ispisat ce 4
//recimo da je pocetna vrijednost varijable obicna_varijabla = 0
//makar ce u ovom slucaju biti u njoj smece jer ju nismo definirali
// ali teoretski uvjek ce ispisati 1
cou << k1.obicna_varijabla ; // ispisat ce 1
cou << k2.obicna_varijabla ; // ispisat ce 1
cou << k3.obicna_varijabla ; // ispisat ce 1
...
ZAKLJUCAK:
staticka varijabla je djeljena izmedju svih objekta istog tipa
i za nju se alocira prostor samo jednom i to prije nego se instancira klasa(u ovom slucaju prije nego se uslo u main)
( znaci laicki postoji samo jedna varijabla " broj_Klasa_objekta" bez obzira bilo 5 instanci klase Klasa ili nijedna)
za funkcije ti je slicno:
staticke funkcije su one funkcije koje mogu pristupiti samo statickim memberima klase
uh al sam ga zakomplicirao ali nadam se da je bar malo pomoglo
[Ovu poruku je menjao gmail_ dana 13.03.2006. u 15:46 GMT+1]