Czy zmienne delphi są domyślnie zainicjowane wartością?

Jestem nowym użytkownikiem Delphi i uruchomiłem kilka testów, aby zobaczyć, do jakich zmiennych obiektowych i zmiennych stosu są domyślnie inicjowane:

TInstanceVariables = class
  fBoolean: boolean; // always starts off as false
  fInteger: integer; // always starts off as zero
  fObject: TObject; // always starts off as nil
end;

Jest to zachowanie, do którego jestem przyzwyczajony z innych języków, ale zastanawiam się, czy można bezpiecznie na nim polegać w Delphi? Na przykład zastanawiam się, czy może to zależeć od ustawienia kompilatora lub może działać inaczej na różnych komputerach. Czy normalne jest poleganie na domyślnych zainicjowanych wartościach obiektów, czy też jawnie ustawiasz wszystkie zmienne instancji w konstruktorze?

Jeśli chodzi o zmienne stosu (na poziomie procedury), moje testy pokazują, że jednostronne wartości logiczne są prawdziwe, jednostkowe liczby całkowite to 2129993264, a niezainicjalizowane obiekty są po prostu niepoprawnymi wskaźnikami (tj. Nie są zerowe). Zgaduję, że normą jest zawsze ustawianie zmiennych na poziomie procedury przed uzyskaniem dostępu do nich?

questionAnswers(9)

yourAnswerToTheQuestion