PDA

Visualizza la versione completa : [C++] Come si utilizza e a cosa serve la parola chiave "static"


UltraBeginner
20-02-2007, 17:15
Ciao a tutti,

mi potreste spiegare come mai si dichiarano le funzioni static?

Io credo che il perchè risieda nel fatto che queste funzioni siano deputate ad accedere a dei dati dichiarati come static,
però dopo ore che sono su sto capitolo ho le idee molto confuse...

Se qualcuno può confermare o chiarire tanto meglio!! :)

Saluti! :ciauz: :ciauz:

andbin
20-02-2007, 18:08
Originariamente inviato da UltraBeginner
mi potreste spiegare come mai si dichiarano le funzioni static?La parola chiave static si applica a variabili e funzioni. Il significato dipende da dove viene usata.
Per le variabili locali (dentro le funzioni/blocchi) lo static impone una durata fissa alla variabile. Per le variabili globali (esterne a funzioni) e per le funzioni lo static impone un linkage "interno", ossia la variabile/funzione non è visibile da altri file sorgente.

keratox
21-02-2007, 13:55
Lo specificatore static serve anche per definire variabili di classe.

XWolverineX
21-02-2007, 17:35
Originariamente inviato da keratox
Lo specificatore static serve anche per definire variabili di classe.
che vengono però condivise da tutte le istanze della classe.
Hai dimenticato di scriverlo.

UltraBeginner
21-02-2007, 17:54
Originariamente inviato da XWolverineX
che vengono però condivise da tutte le istanze della classe.
Hai dimenticato di scriverlo.

si, in pratica se dichiaro una variabile static all interno di una classe, questa sara comune a tutti gli oggetti istanziati, correggetemi se sbaglio.

Per quanto detto da AndBin invece, sempre se ho capito bene, se dichiaro una funzione static essa sara visibile solo nel file .cpp dove l'ho appunto definita. Se invece definisco la funzione static in un file .h essa dovrebbe essere visibile in ogni file dove includo il file header.

Spero di aver capito!! :)

Saluti a tutti! :ciauz: :ciauz:

andbin
21-02-2007, 18:11
Originariamente inviato da UltraBeginner
Per quanto detto da AndBin invece, sempre se ho capito bene, se dichiaro una funzione static essa sara visibile solo nel file .cpp dove l'ho appunto definita. Se invece definisco la funzione static in un file .h essa dovrebbe essere visibile in ogni file dove includo il file header.No. Innanzitutto sebbene nel titolo hai messo C++, io ho spiegato lo static "alla C", non ho pensato di descrivere gli altri usi di static per il C++.

Comunque nei file di header non si mettono mai definizioni (di variabili o funzioni). Le definizioni vanno messe nei sorgenti veri e propri. Se una variabile/funzione è static, il compilatore non inserirà il nome nel file oggetto ed è per tale motivo che il linker non "vedrà" la variabile/funzione.

Loading