读书人

送分100分:关于类的一个小疑点

发布时间: 2012-03-25 20:55:17 作者: rapoo

送分100分:关于类的一个小问题。
CLASS1 是一个类,
Dim A as CLASS1,B as CLASS1,C as CLASS1
Set A = new CLASS1
上句中
(1) new CLASS1是建立一个新的CLASS1对象实例,并在内存中为其分配存储空间。
(2) set 关键字的作用是将变量A 指向new创建的对象,即引用该对象。

再写一句 Set B = new CLASS1 又会产生一个新的CLASS1类型的对象。

问题有以下两个:
(1)那么当我们 再写一句set C = CLASS1时,D所指向的类实例是Set A = new CLASS1 创建的那个实例呢,还是指向Set B = new CLASS1创建的实例呢?

(2)前后的这两个实例,如果没有象变量A B C这样的变量引用这两个实例时,这两个实例如何区分呢。

[解决办法]
问题1:D不指向A,也不指向B,D自言自语:有我这个变量定义吗?
问题2:你可以手动查询内存地址,找到A和B的对象实例占用地址范围,在日记本上记录一个接口地址列表,在引用到他们的地方,使用无条件跳转指令跳转到类的相关接口的地址。

[解决办法]
(1)那么当我们 再写一句set C = CLASS1时,D所指向的类实例是Set A = new CLASS1 创建的那个实例呢,还是指向Set B = new CLASS1创建的实例呢?

set C = CLASS1 直接报错的.修改为 set C = New CLASS1
这样全部都是独立的实例.因为你是New的.

VarPtr 获取变量的内存地址.
ObjPtr:返回任何对象变量引用的地址

代码如下:

VB code
Private Sub Command1_Click()Dim A As Class1, B As Class1, C As Class1Set A = New Class1Set B = New Class1Set C = New Class1MsgBox ("A:" & VarPtr(A) & vbCrLf & _                "B:" & VarPtr(B) & vbCrLf & _                "C:" & VarPtr(C) & vbCrLf)End Sub
[解决办法]
把Class1也贴上

VB code
Option ExplicitPrivate value_ As IntegerProperty Get Value() As String    Value = value_End PropertyProperty Let Value(ByVal NewValue As String)    value_ = NewValueEnd Property
[解决办法]
楼主你还有个马甲hiditb啊^-^
(1)杨莉讲错了,这应该不用讨论了.

(2)Lost_Painting的例子代码已经很能说明问题了:)
如前面大家说的,用ObjPtr区分两个实例吧,

探讨

还有一个问题是:想讲教一下VarPtr(A) 和 ObjPtr(A)得到的结果为什么不一样,有什么区别,谢谢大家。

[解决办法]
你们俩谁是克隆人?
http://topic.csdn.net/u/20100223/16/7ab38913-a445-41dc-92b3-df14b7d60577.html

[解决办法]
你就是一个类 ,都是你,只不过发帖子的位置不同
[解决办法]
探讨
还有一个问题,请教一下:

Set A = new CLASS1  生成一个对象实例,
Set A = new CLASS1  生成另外一个对象实例,并且前一个对象实例消失(假定它的计数为1)。这样理解对吗?



读书人网 >VB

热点推荐