create newinstance请教
时间:2009-08-22
来源:互联网
和create有什么异同??
var
form2:TForm2;
begin
form2.create;
与form2:=TForm2.create(nil) 有什么区别?????
end;
作者: nosimiuy 发布时间: 2009-08-22
Create在执行的时候会先自动判断对象是否已分配内存,没有的话调用NewInstance来获取内存,然后再执行构造函数中的内容。
作者: Harryfin 发布时间: 2009-08-22
能不能 用代码 来配合解释说明一下????
作者: nosimiuy 发布时间: 2009-08-22
建议你找本介绍DELPHI对象机制的书看看,会更明白一点,或者自己跟踪下DELPHI的源代码。
作者: Harryfin 发布时间: 2009-08-22
create 对象的执行范围
作者: sanguomi 发布时间: 2009-08-22
aForm:TForm;
begin
aForm:=TForm(TFormClass.NewInstance);
aForm.showmodal;
aForm.Free;
//这些代码好象 没有问题 那么如果说是NewInstance没有执行构造函数,只是分配内存空间
//这个怎么也可以??
//与下面的代码有什么区别
aForm:=TForm.Create(nil);
aForm.showmodal;
aForm.Free;
end;
作者: nosimiuy 发布时间: 2009-08-24
作者: Harryfin 发布时间: 2009-08-24
作者: Seamour 发布时间: 2009-08-24
还有一个问题
TForm2.Create类的create函数
与对象的create函数有什么区别???
如:下面的例子,是对象的create函数
var
aForm2:TForm2;
begin
aForm2.Creat;
...
....
作者: nosimiuy 发布时间: 2009-08-25
var aFoo: TFoo;
aFoo:=TFoo.Create 相当于 aFoo:=TFoo(TFoo.NewInstance).Create
实际上constructor编译后的代码是这样:
begin
System._ClassCreate
constructor中原来写的内容
AfterConstruction
end
System._ClassCreate 的原型是:
function _ClassCreate(AClass: TClass; Alloc: Boolean): TObject;
其中第二个参数 Alloc 决定在 _ClassCreate 中是否调用 AClass.NewInstance。当编译器看到 TFoo.Create 的时候,将会生成 TFoo.Create(True) 的代码;而 aFoo.Create 将生成 aFoo.Create(Boolean(-1)) 的代码
作者: Seamour 发布时间: 2009-08-26
作者: nosimiuy 发布时间: 2009-08-29
作者: lyhoo163 发布时间: 2009-08-30
作者: lonelyboySVC 发布时间: 2011-08-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28