送分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区分两个实例吧,
[解决办法]
你们俩谁是克隆人?
http://topic.csdn.net/u/20100223/16/7ab38913-a445-41dc-92b3-df14b7d60577.html
[解决办法]
你就是一个类 ,都是你,只不过发帖子的位置不同
[解决办法]