请问TObject中的NewInstance和Create有什么区别和联系呢? ( 积分: 100 )

  • 主题发起人 主题发起人 duyuyu
  • 开始时间 开始时间
D

duyuyu

Unregistered / Unconfirmed
GUEST, unregistred user!
这两个方法都和构造对象有关,我是在搞不清出他们的关系,
请大家指教!
 
这两个方法都和构造对象有关,我是在搞不清出他们的关系,
请大家指教!
 
NewInstance只由delphi内部调用,不要直接使用他
一般应该使用Create
 
类调用Create时会由编绎器调用NewInstance来生成对象所需的内存.如果是由对象上调用Create,则相当于调用了一次Create函数.
 
对象生成过程实际上由三步构成:
1)NewInstance
它根据InstanceSize值使用_GetMem来为对象分配内存
2)InitInstance
依据VMT表的结构,初始化一系列属性,包括一般的属性,复杂类型(如动态数组等),接口引用计数等
3)ClassCreate
注意进行了前两步后,还不能称为对象,ClassCreate的作用就是设定对象的执行框架

虽然在TObject的Create中是空白,但编译器会在编译Create时,自动插入调用以上三个函数的调用指令
 
接受答案了,谢谢三位!尤其是hxb_leiyuan,谢谢你!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部