刚学Delphi,有一点不太明白:既然Delphi中所有的对象都是从TObject中继承的,那么就都可以继承或自己重载Free,那对象销毁时会自动调用它,什么时候应用显式调用呢?比如说下面这个例子:(是《Delphi4编程技术内幕》中的第一个例子)unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Gauges, ExtCtrls, Menus, ComCtrls;
const
MAX = 3;type
TMyGauge = class(TGauge)
private
//FGauge : TGauge;
    FTimer : TTimer;
public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure TimeStart(sender: Tobject);
end;type
  TForm1 = class(TForm)
    Timer1: TTimer;
    PageControl1: TPageControl;
    mnuMain: TMainMenu;
    Menu: TMenuItem;
    mnuShowForm: TMenuItem;
    mnuExit: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure mnuShowFormClick(Sender: TObject);
  private
    { Private declarations }
    FGauge : array [1..MAX] of TMyGauge;
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses unit2, unit3;
{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
randomize;    for I := 1 to MAX do    // Iterate
    begin
      FGauge[i] := TMyGauge.Create(Self);
      FGauge[i].parent := Self;
      FGauge[i].visible := true;
      FGauge[i].top := 50;
      FGauge[i].left := i* 150;
      FGauge[i].Color := RGB(Random(255),Random(255),Random(255));
      FGauge[i].ForeColor := RGB(Random(255),Random(255),Random(255));
    end;    // for
end;{ TMyGauge }constructor TMyGauge.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FTimer := TTimer.Create(Self);
  FTimer.OnTimer := TimeStart ;
  FTimer.Interval := 50;
  FTimer.Enabled := true;
  Width :=75;
  Height :=75;
  Kind := gkPie;end;destructor TMyGauge.Destroy;
begin
  FTimer.Enabled := false;
  FTimer.Free;             {*************************}
  inherited Destroy;
end;procedure TMyGauge.TimeStart(sender: Tobject);
begin
  Progress := Progress +1;
  if Progress = 100 then Progress := 0;
  Color := RGB(Random(255),Random(255),Random(255));
  ForeColor := RGB(Random(255),Random(255),Random(255));end;procedure TForm1.mnuShowFormClick(Sender: TObject);
begin
    form2.Show ;
    form3.Show ;
end;procedure TForm1.Destroy(Sender: TObject);
var
    i : integer;
begin
    for i:= 1 to MAX do
      FGauge[i].Free;            {*************************}
end;end.打注释的这两行必须要显式调用Free吗?对象不应该和析构函数一样自动调用Destroy的吗?