对Delphi接口的又一疑惑:怎么会自动释构的?
2006-02-04 14:00:20 来源:WEB开发网太莫名其妙了,近来被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;
- ››Delphi之多线程实例
- ››Delphi SelectSingleNode的使用 根据节点属性获取...
- ››Delphi接口详述
- ››delphi 远程调试
- ››Delphi与DirectX之DelphiX(34): TDIB.Lightness()...
- ››Delphi Application.MessageBox详解
- ››Delphi只能运行一个程序实例的两种方法
- ››Delphi通过MSHTML实现一个HTML解析类
- ››Delphi图像处理 -- 图像缩放
- ››Delphi中用FastReport制作报表
- ››Delphi 8 For .NET 抢先预览
- ››Delphi控制并行端口位操作
更多精彩
赞助商链接