Saya baru mengenal Delphi, dan saya telah menjalankan beberapa tes untuk melihat variabel objek dan variabel tumpukan apa yang diinisialisasi secara default:
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
Ini adalah perilaku yang biasa saya lakukan dari bahasa lain, tetapi saya bertanya-tanya apakah aman untuk mengandalkannya di Delphi? Misalnya, saya bertanya-tanya apakah itu mungkin bergantung pada pengaturan kompiler, atau mungkin bekerja secara berbeda pada mesin yang berbeda. Apakah normal untuk mengandalkan nilai default yang diinisialisasi untuk objek, atau apakah Anda secara eksplisit menyetel semua variabel instance dalam konstruktor?
Sedangkan untuk variabel stack (procedure-level), pengujian saya menunjukkan bahwa boolean yang disatukan adalah benar, integer yang disatukan adalah 2129993264, dan objek yang tidak terinialisasi hanyalah pointer yang tidak valid (yaitu tidak nihil). Saya menduga normanya adalah selalu menetapkan variabel tingkat prosedur sebelum mengaksesnya?