delphi中newinstance什么意思
和create有什么异同??var
form2:TForm2;
begin
form2.create;
与form2:=TForm2.create(nil) 有什么区别?????
end;
和create有什么异同??var
form2:TForm2;
begin
form2.create;
与form2:=TForm2.create(nil) 有什么区别?????
end;
解决方案 »
- pos打印机与条形码的相关问题
- 有几天要不能来csdn了,辞了烂工作,去找陪女朋友,顺便找新的工作。放分!
- delphi2010中clientdataset的field name missing
- 灾难性故障---一用Flash控件就出现----帮我啊!
- 如何在DBGRID的最后一行屏蔽掉Down按键
- 网上哪里可以找到类似Decision cube的决策分析控件,支持ADO
- 有人愿意大概说说OpenGL吗?
- 关于三层结构开发中接口参数的问题!
- 关于BLOB字段?
- 在DELPHI中用IIS或PWS调试ISAPI程序 (作者:王发军)
- 编译安装remobjects 源码版的时候提示
- 请教QQ截图原理
create 对象的执行范围
aForm:TForm;
begin
aForm:=TForm(TFormClass.NewInstance);
aForm.showmodal;
aForm.Free;
//这些代码好象 没有问题 那么如果说是NewInstance没有执行构造函数,只是分配内存空间
//这个怎么也可以?? //与下面的代码有什么区别
aForm:=TForm.Create(nil);
aForm.showmodal;
aForm.Free;
end;
TForm2.Create类的create函数
与对象的create函数有什么区别???
如:下面的例子,是对象的create函数
var
aForm2:TForm2;
begin
aForm2.Creat;
...
....
var aFoo: TFoo;
aFoo:=TFoo.Create 相当于 aFoo:=TFoo(TFoo.NewInstance).Create
实际上constructor编译后的代码是这样:
begin
System._ClassCreate
constructor中原来写的内容
AfterConstruction
endSystem._ClassCreate 的原型是:
function _ClassCreate(AClass: TClass; Alloc: Boolean): TObject;
其中第二个参数 Alloc 决定在 _ClassCreate 中是否调用 AClass.NewInstance。当编译器看到 TFoo.Create 的时候,将会生成 TFoo.Create(True) 的代码;而 aFoo.Create 将生成 aFoo.Create(Boolean(-1)) 的代码