注册 登录
编程论坛 VB6论坛

CreateObject 和New的区别是什么

happynight 发布于 2008-08-22 08:30, 3393 次点击
在网上搜索了下,看了还是不是很明白
--------------------------------------------------------------------
1 . createobject与new   本质的不同。   
  createobject与new   的关键区别就是声明后系统对资源的控制权不一样。   
  createobject是由内存中重新创建一个实例而不是简单的资源计数器+1的概念。如果内存中存在一个这样的实例,编译器不会理会这个实例而是将对象重新创建一个。实际上是一个完全独立的新的资源实例。并且不受GC的资源回收控制,必须自己回收。   

  new声明的时候,编译器回自动寻找内存中的相应实例,找到了以后,将资源计数器+1,并不会在内存中重新声明内存地址空间,他是受GC限制的,当编译器运行完毕后,会自动将资源编译器里面的该对象的资源计数器-1,如果为计数器0的话就自动释放该对象。   

不明白New的时候为什么是先搜索已经存在的实例,在我的理解里,New的时候应该不存在实例的,有谁能给个范例代码吗或者解释下

2.

New的时候,调用的是那个带下划线的接口   
  CreateObject的时候,返回IDispatch接口   
  带下划线的接口是VB一种特殊方法,自VB4,Office97以后就这么   
  用了,以前的好象只能用IDispatch接口.

带下划线的接口是什么接口

3.

还有就是要说的是那个前期绑定和后期   
  New是前   
  CreateObject是后期   
  因为New的时候必须加入类型库   
  有类型检查   
  而后者没有,所有的调用都可能成功,自已检查   

------------------------------------
不知道各位还有什么补充的吗

[[it] 本帖最后由 happynight 于 2008-8-22 08:32 编辑 [/it]]
8 回复
#2
mnb14782008-08-22 08:46
原来如此呀




" border="0" />
[url=http://www.]坏蛋是怎样炼成的2[/url]
#3
三断笛2008-08-22 14:27
用new比createobject快
#4
happynight2008-08-22 16:11
[bo][un]三断笛[/un] 在 2008-8-22 14:27 的发言:[/bo]

用new比createobject快

多谢 能告之两者的区别吗
#5
ioriliao2008-08-24 15:14
如果我没记错的话,createobject是用来进行后期绑定的.
createobject可以运行时进行对象的创建.
#6
朗朗2008-08-24 16:26
问个直接的

那我们应该在什么时候用NEW或CREATEOBJECT呢?
#7
ioriliao2008-08-24 16:51
我们创建对象时一般先引用才可以用new创建实例,
如果没用引用呢...乍办...用CREATEOBJECT.
#8
multiple19022008-08-26 09:42
同楼上。

CreateObject是要从工程外找到资源的,或者说是要读注册表的,必然比工程内引用好的要慢。
#9
hzybit2014-04-10 12:57
好早的帖子,不过真有帮助
1