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