Переменные delphi инициализируются значением по умолчанию?

Я новичок в 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? Например, мне интересно, может ли это зависеть от настроек компилятора или работать по-разному на разных машинах. Нормально ли полагаться на инициализированные значения по умолчанию для объектов, или вы явно устанавливаете все переменные экземпляра в конструкторе?

Что касается переменных стека (на уровне процедуры), мои тесты показывают, что унифицированные логические значения имеют значение true, целочисленные целочисленные значения равны 2129993264, а неинициализированные объекты являются просто недопустимыми указателями (т.е. не nil). Я предполагаю, что норма состоит в том, чтобы всегда устанавливать переменные уровня процедуры перед доступом к ним?

Ответы на вопрос(9)

Ваш ответ на вопрос