WEB开发网
开发学院软件开发Delphi 对Delphi接口的又一疑惑:怎么会自动释构的? 阅读

对Delphi接口的又一疑惑:怎么会自动释构的?

 2006-02-04 14:00:20 来源:WEB开发网   
核心提示: 太莫名其妙了,近来被Delphi的接口气死了,对Delphi接口的又一疑惑:怎么会自动释构的?,请看以下代码(注意黑体及红色):type IInterface1 = interface end; TClass1 = class(TInterfacedObject, IInterface1) destructo
 

太莫名其妙了,近来被Delphi的接口气死了,请看以下代码(注意黑体及红色):

type
  IInterface1 = interface
  end;


  TClass1 = class(TInterfacedObject, IInterface1)
   destructor destroy; override;
  end;

  TForm1 = class(TForm)
   Button1: TButton;
   PRocedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
  private
   { Private declarations }
   class1: IInterface1;   //注意这里是接口IInterface1 ,不是类TClass1 ,TClass1 是没有这个问题出现的
  public
   { Public declarations }
  end;

implementation
{$R *.dfm}

{ TClass1 }
destructor TClass1.destroy;
begin
  ShowMessage('Destroy!');
  inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  class1 := TClass1.Create;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  class1 := nil;  //就是这里,他会自动跳到destroy那里释构。
             //如果class1是类TClass1,则不会跳到destroy那里去。
             //为什么?为什么?
end;

Tags:Delphi 接口 疑惑

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接