static è usato per una var che assomiglia a una globale.
Es
codice:
 
struct Es
{
  static unsigned int Es_cnt; // contatore
};
static unsigned int Es::Es_cnt = 0;
Se incrementi la var avra lo stesso valore x tutte le istanze della sruct Es.

Spero di averti chiarito.

P.S: lo shildt è sconsigliatissimo da tutti gli esperti di C/C++