Para mim, o uso da palavra-chave static
em C e idiomas como C # e Java são "falsos amigos", como "tornar-se" em inglês e "bekommen" em alemão (= "obter" em inglês), porque significam coisas diferentes.
Em C static
, significa que a função ou variável é acessível apenas através de funções dentro do mesmo arquivo de origem, comparável a private
funções e membros em C ++, Java e C #.
Em C ++, Java e C # static
significa que os métodos não são membros de uma instância de classe, mas efetivamente são mais ou menos como funções C mais espaço para nome.
IMHO esses dois conceitos são bem diferentes, então por que os designers de C ++ e mais tarde Java e C # escolheram a static
palavra - chave para esse comportamento? Existe uma conexão lógica que eu sinto falta?
EDIT
Eu sei, que static
em C não governa a acessibilidade de maneira semelhante à private
do C ++, mas pode ser usado dessa maneira, consulte https://stackoverflow.com/a/1479639/124983