//func.pas文件
.....
type
Tfunc = Class
i:integer;
str:String;
private
//
public
function SayHello():boolean;
end;var
func: Tfunc;implementation......
最后在一个窗体里引用func.pasprocedure TForm1.Button1Click(Sender: TObject);
begin
func.SayHello();
end;-----------------------------------------
问题如下:func是什么时候创建的?应该在什么地方释放?用不用释放?
.....
type
Tfunc = Class
i:integer;
str:String;
private
//
public
function SayHello():boolean;
end;var
func: Tfunc;implementation......
最后在一个窗体里引用func.pasprocedure TForm1.Button1Click(Sender: TObject);
begin
func.SayHello();
end;-----------------------------------------
问题如下:func是什么时候创建的?应该在什么地方释放?用不用释放?
并没有创建func啊,只是在func.pas里有一句
var
func: Tfunc;
var
func: Tfunc;
----------------------------------------------
你自己不说了func没有创建,因为没有这一句:func:=Tfunc.Create;没有
创建当然也不存在释放的问题。
? 并没有创建func啊,只是在func.pas里有一句
var
func: Tfunc;
----------------------------------------------
你自己不说了func没有创建,因为没有这一句:func:=Tfunc.Create;没有
创建当然也不存在释放的问题。======================================
难道说:只要加上一句var func: Tfunc,就不用创建这个类了,还是Delphi在后台自动创建?
------------------------------------------------------○(^_^)○ 什么叫做“完全静态”?“av”是啥谢谢!
----------------------------------------------------------------
不是创建类,是创建对象,除非Tfunc是类属,类本身是在内存中静态存在
的,否则func:=Tfunc.Create;这一句就会出现av,但非静态类里一定有动
态属性或方法的,在这一句func:=Tfunc.Create;之前,动态属性或方法都
没有初始化,就是说在内存没有这些动态对象,这时候去访问他们就会有
av错误。
Tfunc = Class
i:integer;
str:String;
private
//
public
function SayHello():boolean;
end;上面的变量 i,str 算不算动态属性或者方法?SayHello()函数呢?
static void method...
class procedure....
具体有没有动态属性或者方法我也不知道,这是我自己根据静态方法理解的,也不知道学名应该叫什么,就是和具体对象相关的那些变量,c中叫实例变量,c中规定静态方法不能访问实例变量,象你说得那些i,str什么的就是我理解的动态字段或者叫实例字段。
这种做法要根据实际来确定,静态方法也有它的好处,不管你创建了多少个对象,静态方法在内存中只有一个副本。而且静态方法不是通过实例访问的,是通过类访问的,func.sayhello()这种访问是怎么也说不通的。