读书人

问一个很Simple的有关问题类是什么时

发布时间: 2012-03-09 16:54:57 作者: rapoo

问一个很Simple的问题,类是什么时候创建的?
//func.pas文件
.....
type
Tfunc = Class
i:integer;
str:String;
private
//
public
function SayHello():boolean;
end;

var
func: Tfunc;

implementation

......


最后在一个窗体里引用func.pas

procedure TForm1.Button1Click(Sender: TObject);
begin
func.SayHello();
end;

-----------------------------------------
问题如下:func是什么时候创建的?应该在什么地方释放?用不用释放?





[解决办法]
找 func:=Tfunc.Create;这句代码。
[解决办法]
在引用func的单元里找找,应该有func := tfunc.create;
[解决办法]
如果整个项目里面都没有func: Tfunc;的创建语句,那么根本就是错误,不是提倡不提倡问题了
[解决办法]
func只是一个指向类实体的指针变量。只有创建一个Tfunc实例,然后赋给func,才能通过func进行访问,要不会出错的。

你搜索一下在那创建了,Search-> Find In Files ,输入 Tfunc.Create
[解决办法]
静态方法是c++的叫法,在d中因该对应的是类方法,就是:
static void method...
class procedure....
具体有没有动态属性或者方法我也不知道,这是我自己根据静态方法理解的,也不知道学名应该叫什么,就是和具体对象相关的那些变量,c中叫实例变量,c中规定静态方法不能访问实例变量,象你说得那些i,str什么的就是我理解的动态字段或者叫实例字段。
这种做法要根据实际来确定,静态方法也有它的好处,不管你创建了多少个对象,静态方法在内存中只有一个副本。而且静态方法不是通过实例访问的,是通过类访问的,func.sayhello()这种访问是怎么也说不通的。

读书人网 >.NET

热点推荐