Jestem nowy w Delphi i przeprowadziłem kilka testów, aby zobaczyć, jakie zmienne obiektu i zmienne 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;
Do takiego zachowania jestem przyzwyczajony w innych językach, ale zastanawiam się, czy można na nim bezpiecznie polegać w Delphi? Na przykład zastanawiam się, czy może to zależeć od ustawień kompilatora, czy 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 zjednolicone wartości logiczne są prawdziwe, zjednostkowane liczby całkowite to 2129993264, a niezinicjalizowane obiekty są po prostu nieprawidłowymi wskaźnikami (tj. Nie są zerowe). Domyślam się, że normą jest zawsze ustawianie zmiennych na poziomie procedury przed uzyskaniem do nich dostępu?