2014-07-07 2 views
5

내 코드 중 하나를 거치면서 다음과 같은 하나의 문장이 붙어 있습니다.`Class of`형 선언의 의미는 무엇입니까?

TMyObjectClass = class of TMyObject;

나는 조금 혼란 스러워요,이 문장의 의미가 무엇인지 궁금. TMyObjectClass에는 문 앞에 선언이 없습니다.

TMyObject는 다음과 같이 선언을 가지고있다 :

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

그래서, 내 질문은 문 TMyObjectClass = class of TMyObject;

및 방법 TMyObjectClass 작품의 의미는 무엇입니까?

저는 델파이에 조금 익숙합니다. 따라서 이러한 유형의 선언과 그에 대한 해결 방법에 대한 아이디어를 얻으시기 바랍니다.

+3

['here'] (http://docwiki.embarcadero.com/RADStudio/XE/en/Class_References)에 대한 내용을 읽을 수 있습니다. – TLama

답변

14

이것은 Class Reference입니다.

메타 클래스와 함께 사용됩니다. 정규 예는이 가상 생성자 동적 결합을 허용

TComponentClass = class of TComponent; 

사용 델파이 스트리밍 프레임 워크이다. TComponent 생성자는 virtual입니다. 스트리밍 프레임 워크는 TComponent에서 파생 된 클래스를 인스턴스화해야합니다. TComponent.Createvirtual 때문에 이것은 다형성 방식으로 결합되어, 지금

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

: 그것은 그래서 이런 일을 수행합니다. TComponentClassTButton 인 경우 TButton.Create이 호출됩니다. TComponentClassTPanel이면 TPanel.Create이 호출됩니다. 등등.

실현해야 할 가장 중요한 점은 생성되는 클래스가 런타임에만 결정된다는 것입니다. 많은 언어에는이 기능이 없으며, 특히 C++이 있습니다.

+0

@ jerry 네 감사합니다. –

관련 문제