SORU
25 EYLÜL 2008, PERŞEMBE


Delphi değişkenler varsayılan bir değerle başlatılır?

Delphi yeniyim ve bazı testler nesne değişkenleri ve Değişkenler varsayılan olarak başlatılır yığını görmek için koşuyorum:

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

Bu diğer dillerden alışık olduğum bir davranıştır, ama eğer güvenli Delphi güvenmek olduğunu merak ediyorum? Örneğin, eğer bir derleyici ayarı bağlı, ya da farklı farklı makineler üzerinde çalışmak belki diye merak ediyordum. Nesneler için varsayılan değerler başlatıldı güvenmek normal mi, ya da açıkça yapıcı tüm yerel değişkenler için?

(Usul-düzey) değişkenler stack gelince, benim testler unitialized booleans doğru olduğunu gösteriyor, unitialized tamsayılar 2129993264 ve nesneleri sadece geçersiz işaretçiler uninialized (yani sıfır). Norm her zaman yordam düzeyi değişkeni ayarlamak için ulaşmadan önce tahmin ediyorum.

CEVAP
25 EYLÜL 2008, PERŞEMBE


Evet, bu belgelenmiş bir davranış

  • Nesne alanları ", Yanlış, ya da ne olursa olsun geçerlidir. nil hep 0, 0.0, başlatılan

  • Global değişkenler her zaman 0 vs için de başlatıldı

  • Yerel referans sayılan* değişkenler her zaman sıfır olarak başlatılır veya ";

  • Yerel olmayan referans sayılan* değişkenler kullanılmadan önce bir değer atamak zorunda bu yüzden başlatılmamış.

Barry Kelly bir yerlerde bir tanım yazdı "referans sayılan" şunu yapacaksın, ama bulamıyorum artık, bu arada:

== bu sayılan başvuru kendilerini, ya da referans sayılır doğrudan ya da dolaylı olarak alanları (kayıtlar için) veya unsurları içerir (için diziler) başvuru sayılan gibidir: string, variant, interface yadinamik diziyastatik dizibu türleri içeren.

Notlar:

  • record kendini referans sayılan olmak için yeterli değildir
  • Jenerik ile henüz denemedim

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Feel The Electricity!

    Feel The Ele

    20 ŞUBAT 2010
  • The10HourMan

    The10HourMan

    28 EYLÜL 2012
  • WPBeginner - WordPress Tutorials

    WPBeginner -

    17 Temmuz 2009