Z zzjat Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-21 #1 "对象实例实际上是一个指针.当把一个对象赋给变量时, 其实就是当前实例的指针指向另一个对象,而原来的对象仍在内存中."
R ReallyFail Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-21 #3 fun var o1,o2:tobject; begin o1:=tobject.create; o2:=o1; 这时o1,o2是同一个对象 o2:=nil; o1:=nil 那对象还在 end;
精 精灵太保 Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-21 #4 对象实例实际上是一个指针 (它是实例就有实体在内存中,访问对象的名字只是一个地址) 当把一个对象赋给变量时 ( var Obj1,Obj2:TObject; begin Obj1:=TObject.Create; //产生一个TObject的实例Obj1,此时的Obj2在内存中只有TObject的结构而没有其它。 //而Obj1是一个实例,它能干活,Obj2则不能。 Obj2:=Obj1; //让Obj2的结构指针指向Obj1实例,此时Obj2和Obj1就是同一个东东了。 //因为它们指向了同一个地址,Obj1能干的Obj1就可以做。 Obj1:=nil;//让Obj1指向空,它就不再等同于Obj2了,但内存中的对象还在。Obj1不能干活了。 Obj2.Free;//将Obj2指向的对象清除,Obj2在内存中的对象不存在了。 end;
对象实例实际上是一个指针 (它是实例就有实体在内存中,访问对象的名字只是一个地址) 当把一个对象赋给变量时 ( var Obj1,Obj2:TObject; begin Obj1:=TObject.Create; //产生一个TObject的实例Obj1,此时的Obj2在内存中只有TObject的结构而没有其它。 //而Obj1是一个实例,它能干活,Obj2则不能。 Obj2:=Obj1; //让Obj2的结构指针指向Obj1实例,此时Obj2和Obj1就是同一个东东了。 //因为它们指向了同一个地址,Obj1能干的Obj1就可以做。 Obj1:=nil;//让Obj1指向空,它就不再等同于Obj2了,但内存中的对象还在。Obj1不能干活了。 Obj2.Free;//将Obj2指向的对象清除,Obj2在内存中的对象不存在了。 end;
Z zzjat Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-22 #5 精灵太保:如果是Obj2指向Obj1的话,根据指针的定义,指针保存的是内存地址. 那么Obj1:=nil的时候,那Obj2中保存的Obj1的地址不也失效了吗?Obj2.Free也不可能 发生呀,因为Obj2指向为空,它又如何得到原来对象的地址呢?
精灵太保:如果是Obj2指向Obj1的话,根据指针的定义,指针保存的是内存地址. 那么Obj1:=nil的时候,那Obj2中保存的Obj1的地址不也失效了吗?Obj2.Free也不可能 发生呀,因为Obj2指向为空,它又如何得到原来对象的地址呢?
大 大富翁WW Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-22 #6 指针就是一个指向地址的地址变量,它不能存储任何东西除了地址; Obj2和Obj1虽然它们存的都是同一个地址, 但它们本身是两个不同 地址的地址变量(即它们本身的地址是不同的), 所以 Obj1 := nil 并不影响 Obj2 中所存内容
指针就是一个指向地址的地址变量,它不能存储任何东西除了地址; Obj2和Obj1虽然它们存的都是同一个地址, 但它们本身是两个不同 地址的地址变量(即它们本身的地址是不同的), 所以 Obj1 := nil 并不影响 Obj2 中所存内容
W wenbin Unregistered / Unconfirmed GUEST, unregistred user! 2003-03-22 #7 其实他们说了那么多,归根结底你要理解什么是指针? 其实指针就是一个放置地址编号的 空间。比如说P为一指针,现将对象A赋给变量B,其实就是将对象A在内存中的地址编号赋 给了B,B中只存了A在内存中的编号。实际对象并没移动!我们可以把指向那地址空间的编 号叫指针。这种说法应可以说很形象了。就像生活中的一个箭头指向某物样的。
其实他们说了那么多,归根结底你要理解什么是指针? 其实指针就是一个放置地址编号的 空间。比如说P为一指针,现将对象A赋给变量B,其实就是将对象A在内存中的地址编号赋 给了B,B中只存了A在内存中的编号。实际对象并没移动!我们可以把指向那地址空间的编 号叫指针。这种说法应可以说很形象了。就像生活中的一个箭头指向某物样的。