Я новачок у Delphi, і я проводив кілька тестів, щоб побачити, до яких об’єктних змінних та стекових змінних ініціалізовано за замовчуванням:
TInstanceVariables = class
fBoolean: boolean; // always starts off as false
fInteger: integer; // always starts off as zero
fObject: TObject; // always starts off as nil
end;
Це поведінка, до якої я звик з інших мов, але мені цікаво, чи безпечно на неї покладатися в Delphi? Наприклад, мені цікаво, чи це може залежати від налаштування компілятора, чи може працювати по-іншому на різних машинах. Чи нормально покладатися на ініціалізовані за замовчуванням значення для об'єктів, або ви чітко встановлюєте всі змінні екземпляра в конструкторі?
Що стосується змінних стеків (рівня процедури), то мої тести показують, що неітіалізовані булеві знаки є істинними, неіціалізовані цілі числа - 2129993264, а неініалізовані об'єкти - просто недійсні покажчики (тобто не нульові). Я здогадуюсь, норма - це завжди встановлювати змінні на рівні процедури, перш ніж звертатися до них?