1.重載構造函數overload關鍵字
eg:
constructor Create(Name:string;Sex:string;Year:integer;Tall:integer;Weight:integer);overload;
constructor Create(Name:string;Sex:string);overload;
ps: 重載構造函數,注意一定要使用關鍵字:overload
2.自定義類中是否需要顯式定義構造函數:
所有類默認繼承自TObject,即使沒有聲明class(TObject),Create實際是通知編譯器為其分配一塊堆內存.
在自定義類中,即使沒有顯式的定義構造函數,程序默認調用的是TObject的構造函數.
3.TObject.Free的真正作用:實際上只是為"堆內存塊"解鎖,使得其他程序可以使用該塊堆內存,而引用並沒有被
重置為nil,因此,經常Free之后,仍可以正確訪問到對象的成員變量(解鎖后,該塊內存沒有被其他程序使用)
4.自定義的類,什么時候需要專門定義析構函數?
自定義的類中,含有類成員.由於Free操作只是對當前對象的"堆內存塊"進行了解鎖,而類成員指向的另一塊
"堆內存塊" 並沒有被解鎖,如果不在析構函數中對其解鎖,則會造成內存泄漏.
5.不需要程序員顯示調用Free的自定義類?
對於從Tcomponent繼承下來的對象,在Create的時候可以指定一個所有者。如果一個對象在創建時指
定了所有者,那么該對象的生存期將由所有者進行管理。所有者在析構時,會同時析構它所擁有的全部對象。
6.自定義類中,如何定義析構函數?
Delphi中所有類都繼承自TObject ,Create默認不是虛方法 ,Destroy默認是虛方法.被覆蓋的函數必須是
虛(virtual)的,或者是動態(dynamic)的,因此自定義類的Destroy方法可以被覆蓋.
而VCL中組件繼承的大多Create都被聲明成虛方法了。