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