Type
  TC = class
    procedure test;
  end;...procedure TC.test;
var
  btn: TButton;
begin
  btn := TButton.Create(nil);
  btn.Free;
end;...c := TC.Create;
c.test;
c.test;连续运行了c.test两次,那这两次test函数运行过程中创建的局部btn是不是一个对象,还是两个不同的对象???

解决方案 »

  1.   

    对象的方法的具备变量(对象指针),只在方法执行时有效
    当然是2个不同的对象(类型都是Tbutton)
      

  2.   

    我觉得是一个对象,因为btn的作用域是局部的,每一次执行的对象指针应该是也是相同的,
      

  3.   

    var
      btn: TButton;
    begin
      btn := TButton.Create(nil);
      btn.Free;
    end;当然是两个对象了。指针相对并不就是同一个对象,最多是两个一样的对象罢了。
    btn.Free;后系统将对象所占用的内存都释放了。