C++ Static

Da Andreabont's Wiki.

In C++ la parola chiave static indica genericamente un qualcosa di residente, ma varia il suo comportamento in base a dove viene applicata.

Variabili statiche

Se una variabile è definita statica, allora questa rimarrà valorizzata anche all'uscita dal contesto, pur non potendo essere raggiunta ad di fuori di esso. Se una variabile const è già inizializzata, una seconda inizializzazione non avrà effetto. Nel nostro esempio la variabile statica count terrà il conto di quante volte viene chiamata la funzione counter().

void counter() {
   static int count = 0;
   count++;
}

Oggetti statici

Gli oggetti statici si comportano come le altre variabili statiche, con la particolarità che il distruttore viene chiamato solo al termine del programma.

static miaClasse mioOggetto;

Variabile statica in una classe

Se una variabile è definita statica in una classe, vuol dire che questa sarà condivisa tra tutte le istanze della classe che la definisce, inoltre sarà accessibile anche senza passare attraverso un'istanza.

class miaClasse {
public:
    const int miavariabile;
}

int main() {
    miaClasse::miavariabile = 0;
}

Metodo statico di una classe

Se la parola chiave const è applicata ad un metodo di una classe, questo opererà in modo indipendente dall'istanza della classe. Potrà essere chiamato senza passare da un'istanza, e non potrà accedere alle variabili locali della classe che non sono definite statiche. (Non è definito il this)

class miaClasse() {
public:
    const void mioMetodo(){
        // Codice...
    }
}

int main() {
    miaClasse::mioMetodo();
}