程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 對Delphi接口的又一疑惑:怎麼會自動釋構的?

對Delphi接口的又一疑惑:怎麼會自動釋構的?

編輯:Delphi
太莫名其妙了,近來被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那裡去。
  
                         //為什麼?為什麼?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved