Per me, l'uso della parola chiave static
in C e lingue come C # e Java sono "falsi amici" come "diventare" in inglese e "bekommen" in tedesco (= "ottenere" in inglese), perché significano cose diverse.
In C static
significa che la funzione o la variabile è accessibile solo tramite le funzioni all'interno dello stesso file sorgente, paragonabile a private
funzioni e membri in C ++, Java e C #.
In C ++, Java e C # static
significa che i metodi non sono membri di un'istanza di classe, ma effettivamente sono più o meno come le funzioni C più lo spazio dei nomi.
IMHO questi due concetti sono molto diversi, quindi perché i progettisti di C ++ e in seguito di Java e C # hanno scelto la parola chiave static
per quel comportamento? C'è una connessione logica che mi manca?
Modifica
Lo so, che static
in C non governa l'accessibilità in modo simile a private
in C ++, ma può essere usato in questo modo, vedi link