Erros, bugs, perguntas - página 2860
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
É este o comportamento correcto do compilador? Parece que A::i não é criado no momento de chamar o método A::f() chamando A::i.
O que se entende por "criado" ?
estática é apenas uma forma de criar um ancinho para esconder uma variável ou função global, limitando a visibilidade de uma função ou classe
A memória para uma variável global existe sempre.
E sim, para variáveis globais a ordem de inicialização é muito importante (evite aceder à variável antes de a inicializar)
Este exemplo funcionou...
No exemplo acima funcionou...
Vai mudar o compilador nesta altura? Pessoalmente, gostaria de manter as coisas como estão.
Vai mudar o compilador nesta altura? Pessoalmente, gostaria de manter tudo como está.
Não estamos a planear mudar o comportamento.
Mas há uma tarefa diferida de detecção de erros de acesso a variáveis globais (antes da inicialização).
Se implementarmos esta funcionalidade, receberemos um aviso ao compilar o código acima: a função A::f() é utilizada para inicializar A::i, que acede à variável A::i a ser inicializada.
Se implementarmos a funcionalidade, receberá um aviso ao compilar o código acima: a função A::f() é utilizada para inicializar A::i, que acede à variável A::i a ser inicializada.
Obrigado!
Não pretendemos alterar o comportamento
Depois contradiz o seu conceito de que uma variável é considerada declarada quando a declaração está completa. Porque o inventou em primeiro lugar? Se é assim num caso e diferente noutro caso
Uma boa língua tem regras uniformes, não o contrárioDepois contradiz o seu próprio conceito de que uma variável é considerada declarada quando a declaração está completa. Porque o inventou em primeiro lugar? Se assim for num caso e diferente noutro
Uma boa língua tem regras uniformes, não o contrárioSou um ignorante total, mas não teria pensado nisso (int i = i) mesmo que tivesse bebido demais....... 8(
Sou um ignorante total, mas não teria pensado nisto (int i = i) mesmo que tivesse bebido demais....... 8(
E qual é a principal diferença em relação ao exemplo original? Retire coisas desnecessárias e obterá:
Só há muitas cordas ali, e apenas uma aqui.
Se não houver erro de compilação não deveria haver um aqui também (e vice-versa), caso contrário é uma confusão
Depois contradiz o seu próprio conceito de que uma variável é considerada declarada quando a declaração está completa. Porque o inventou em primeiro lugar? Se assim for num caso e diferente noutro
Uma boa língua tem regras uniformes, não o contrárioQual é a diferença fundamental em relação ao exemplo original? Retire o material extra e já o tem:
Só há muitas linhas ali, e apenas uma aqui
Se não houver erro de compilação não deveria haver um aqui também (e vice-versa), caso contrário é uma confusão.
Está enganado, não é a mesma coisa.
Descrição de uma variável estática numa classe é a sua pré-definição (semelhante à pré-definição de uma função ou classe), mas a localização, de facto, apenas diz ao compilador onde a variável será armazenada na memória e quando deve ser inicializada