问题A: 这是Delphi的类方法。所谓类方法就是不创建类的实例就可以使用的方法,以class关键字说明,Delphi默认构造方法为类方法。如 type TMyclass=class class procedure info; end; class procdure TMyclass.info; begin writeln("class method"); end;begin TMyclass.info; end; 构造方法是个函数,要返回实例地址,所以要“:=”;否则MyObject_One指向NIL,调用方法时回出现指针错误。问题B 同A,free方法不是类方法,当然不能TMyFirstOne.Free。
当然是要被释放:) 但是为什么而不能直接用 TMyFirstOne.Free 释放呢?
这是Delphi的类方法。所谓类方法就是不创建类的实例就可以使用的方法,以class关键字说明,Delphi默认构造方法为类方法。如
type TMyclass=class
class procedure info;
end;
class procdure TMyclass.info;
begin
writeln("class method");
end;begin
TMyclass.info;
end;
构造方法是个函数,要返回实例地址,所以要“:=”;否则MyObject_One指向NIL,调用方法时回出现指针错误。问题B
同A,free方法不是类方法,当然不能TMyFirstOne.Free。
要使用delphi的类,必须先创建该类的一个实例,这两句都是类的实例化B:
类的实例使用完毕后,一定要释放,free就是释放类实例的一个方法
有的实例使用过后没有显式释放是因为它创建的方式不同,例如创建时就指定了宿主,这种实例的释放由宿主为它完成
2,free可以理解为释放类TMyFirstOne创建时allocate的内存,就象用new分配了内存后要用dispose释放一样的道理