Qual è la differenza tra static
static
identificatore globale globale e non in C++?Qual è la differenza tra l'identificatore globale statico e non statico globale in C++?
risposta
Limiti statici del campo di validità della variabile allo stesso translation unit.
Un statico variabile globale trovi collegamento interno.
A globale non statico variabile ha collegamento esterno.
Buona Lettura:
What is external linkage and internal linkage?
Se un globale non statico ha un collegamento esterno, a cosa serve 'extern'? – rubenvb
@rubenvb: la risposta alla tua Q è spiegata in dettaglio nel collegamento in linea per rispondere. –
@rubenvb 'extern' significa che è una dichiarazione e non una definizione, come il prototipo di una funzione. –
Una variabile globale static
è disponibile solo in unità traduzione (cioè file di origine) la variabile è in una variabile globale non statico è possibile fare riferimento da altri. file sorgenti.
In particolare: l'uso di 'static' impedisce al linker di esportare il simbolo da quella unità di traduzione. – cdhowie
variabili globali non statiche sono accessibili da altri file, mentre le variabili globali statiche non
sono Se non si sa quale sia la differenza, risposta corretta sarà probabilmente ancora più confusa a voi. In breve, gli static
s di una classe non sono resi noti per la statica nell'ambito del file. Le statistiche di una classe sono essenzialmente identiche alle variabili regolari, ma dovranno essere referenziate anteponendole al nome della classe. Le statistiche sull'ambito del file sono variabili regolari che sono locali solo al file. Per capire cosa significa, prova ad aggiungere due variabili con lo stesso nome in un singolo progetto. Riceverai errori linker perché ci sono più simboli identici. Rendendo statici i simboli eviterete che problemi e il nome della variabile non siano accessibili dall'esterno del file.
"Static globale" - che cosa vuoi dire con questo? – Andrzej
@Andrzej un globale con la parola chiave 'static' che precede il tipo. 'static int x = 5;' ad esempio con scope globale. –