這可能是一個簡單的問題,但我想知道如何確保調用類的構造函數。德爾福 - 確保調用類構造函數
如果我有以下代碼:
type TMyObject = class(TObject)
public
constructor Create;override;
end;
implementation
constructor TMyObject.Create;override;
begin
inherited;
//do other instantiation
end;
德爾福不允許這樣 - 「不能覆蓋靜態方法」。
我想要做的是確保該對象是使用我的自定義Create構造函數創建的,並禁止調用祖先創建構造函數。
我目前的解決問題的方法是定義像這樣一個獨特的signatured創建構造函數:
constructor Create(aName : String);overload;
但程序員可能調用祖先Create()方法。
感謝您的答案,有沒有創建任何原因是靜態方法,但Destroy是虛擬的?什麼是優先的方式 - 使用AfterConstruction,或創建? – Simon
你可能想問一個關於這個問題的另一個問題,因爲在評論中回答「太多」了...... –
無論如何我會試一試 - 除了創建一個任意類的對象之外,它更有可能在任意類上調用析構函數(例如'帶有'OwnsObject:= True'的TObjectList')。 –