Sono nuovo di Delphi e ho eseguito alcuni test per vedere quali variabili oggetto e variabili di stack sono inizializzate per impostazione predefinita:
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
Questo è il comportamento a cui sono abituato da altre lingue, ma mi chiedo se sia sicuro fare affidamento su di esso in Delphi? Ad esempio, mi chiedo se potrebbe dipendere da un'impostazione del compilatore o forse funzionare in modo diverso su macchine diverse. È normale fare affidamento sui valori inizializzati predefiniti per gli oggetti o si impostano esplicitamente tutte le variabili di istanza nel costruttore?
Per quanto riguarda le variabili stack (a livello di procedura), i miei test mostrano che i booleani unitializzati sono veri, gli interi unitializzati sono 2129993264 e gli oggetti non inizializzati sono solo puntatori non validi (cioè non nulli). Immagino che la norma sia quella di impostare sempre le variabili a livello di procedura prima di accedervi?