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

王朝delphi·作者佚名  2006-01-09
宽屏版  字体: |||超大  

太莫名其妙了,近来被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;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有