Eu sou novo no Delphi, e tenho executado alguns testes para ver quais variáveis de objeto e variáveis de pilha são inicializadas por padrão:
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
Este é o comportamento que estou acostumado em outras linguagens, mas estou me perguntando se é seguro confiar nele no Delphi? Por exemplo, estou me perguntando se isso pode depender de uma configuração do compilador ou talvez funcionar de forma diferente em máquinas diferentes. É normal confiar em valores inicializados padrão para objetos ou você define explicitamente todas as variáveis de instância no construtor?
Quanto às variáveis da pilha (nível de procedimento), meus testes estão mostrando que os booleanos unitializados são verdadeiros, os inteiros unitializados são 2129993264 e os objetos não inicializados são apenas ponteiros inválidos (ou seja, não nulo). Estou supondo que a norma é sempre definir variáveis de nível de procedimento antes de acessá-los.