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