如果我寫類的類型和構造函數調用
type
MyClass = class of TMyClass;
...
Obj := MyClass.Create;
正確的構造函數(一個在TMyClass)被調用。
如果我寫
var
ClassVar : TClass;
...
ClassVar := TMyClass;
Obj := ClassVar.Create;
只有TObject的構造函數被調用。
爲什麼?這兩個版本有什麼區別?我可以在第二個場景中強制使用TMyClass構造函數嗎?
+1謝謝!構造函數是虛擬的嗎?具體來說,TObject.Create是不是虛擬的? – jpfollenius 2009-08-06 18:17:53
可能是因爲它不需要虛擬。首先,虛擬方法調用只能使用相同的簽名,而大多數構造函數至少需要一個參數。其次,如果您以這種方式使用工廠模式,那麼您可能需要特定類的後代。 – 2009-08-06 18:21:38