关于构造器的问题(50分)

  • 主题发起人 主题发起人 scloudy
  • 开始时间 开始时间
S

scloudy

Unregistered / Unconfirmed
GUEST, unregistred user!
我是一位初学者,对于Create方法有些不解,请那位高手指点一下,并告诉我
在何处、何时使用?谢谢!
 
Create和指针的New差不多,是分配内存。
在你需要用的时候用。
比如你的Project有很多个Form,如果都AutoCreate的话内存不够,这时就需要用
Form1:=TForm1.Create(Application);
Form1.ShowModal;
......
Form1.Free;
 
create是一个对象的构造函数,就是说,有了它对象才能够建造起来.

一个对象的实例之所以成为实例,就要用到他了.
var AButton : TButton;

...
AButton :=TButton.create(Form1);
...
在没有create之前,AButton就是不确定的值.

记得用完了一定要释放. AButton.Free;


 
//faint,窗口打开多了一点,就被wolf抢了先.
 
Create是构造函数,目的是在内存中生成一个对象实例。一个对象在还没有Create之前,它是一个空的指针。

var
TAAA, TBBB: TObject;

....

TAAA:=TObject.Create(nil);
此时,内存里存在了TAAA的实例,你可以访问它的方法或数据了。
因为还没有创建TBBB实例,所以TBBB只是一个指针。你可以赋值给它。
TBBB:=TAAA;
这时,TBBB和TAAA指向内存的同一个地方。
 
Create是一个类方法,类方法不同于其他方法在于,调用类方法时不需要一定创建了
类的实例。Object Pascal不同于C++,声明对象变量时并没有自动创建它,需要你来
现式创建,这时就用到Create方法了。上面Jetideas说的就是这个。Create是Object Pascal中所有类都有的方法。
如自己创建一个TTable对象可先如下声名:
var
Table : TTable;

再在语句中创建它,用完后释放:
Table := TTable.Create(Self);
...
Table.Free;

Object Pascal中的对象构造函数就是Create
析构函数是Destory;
Object Pascal中通常建议在释放对象时调用Free,而不是直接调用Destory。


 
多人接受答案了。
 
后退
顶部