2014-07-07 46 views
5

Kodumdan birini geçerken, aşağıdaki gibi bir ifadeye takılıyorum.Tür bildirme sınıfının anlamı nedir?

TMyObjectClass = class of TMyObject;

ben biraz karıştı ve bu ifadenin anlamı nedir merak. TMyObjectClass'un ifadesinin üzerinde bir beyanı yoktur.

ve TMyObject aşağıda beyanı yaşıyor:

TMyObject = class(TObject) private //some private member declaration Public // some public variables end;

Yani, sorum açıklamada TMyObjectClass = class of TMyObject;

ve Nasıl TMyObjectClass eserlerin anlamı nedir nedir?

Delphi'ye biraz yeni geldim, bu nedenle lütfen bu tür bildirimler ve geçici çözümler hakkında biraz fikir edinmeme yardımcı olun.

+3

Bu konuyla ilgili olarak ['burada'] okuyabilirsiniz (http://docwiki.embarcadero.com/RADStudio/XE/en/Class_References). – TLama

cevap

14

Bu bir Class Reference dur.

Meta sınıflarıyla çalışmak için kullanılırlar. Kanonik örnek,

'u kullanan Delphi akış çerçevesidir. Bu, sanal kurucular için dinamik bağlamaya izin verir. TComponent yapıcısı virtual'dur. Akış çerçevesi, TComponent'dan türetilen sınıfları örneklemelidir. TComponent.Createvirtual olduğundan bu bir polimorfik biçimde bağlanır, Şimdi

var 
    ComponentClass: TComponentClass; 
    Component: TComponent; 
.... 
ComponentClass := GetComponentClassSomehowDoesntMatterHow; 
Component := ComponentClass.Create(Owner); 

: O kadar böyle bir şey yapar. TComponentClass, TButton ise, TButton.Create çağrılır. TComponentClass, TPanel ise, TPanel.Create çağrılır. Ve bunun gibi.

Gerçekleştirilmesi gereken en önemli şey, inşa edilen sınıfın yalnızca çalışma zamanında belirlendiği. Birçok dilin, özellikle C++ gibi bu yetenekten yoksun olduğunu unutmayın.

+0

@jerry evet teşekkürler –