首页 > 编程 > Delphi > 正文

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

2019-11-18 18:04:58
字体:
来源:转载
供稿:网友
 

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


上一篇:比较VC和Delphi的WinTest工程

下一篇:delphi多线程程序示例(与.net一样简单)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
学习交流
热门图片

新闻热点

疑难解答

图片精选

网友关注