您的位置:程序门 -> vb -> 基础类



set 傳值??傳址????


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


set 傳值??傳址????
发表于:2007-08-12 15:15:15 楼主
private   sub   command1_click()
        dim   l_objprocea   as   proce
        dim   l_objproceb   as   proce
       
        set   l_objprocea   =   new   proce
        set   l_objproceb   =   new   proce
       
        l_objprocea.processcode   =   "aaaaa "
        l_objproceb.processcode   =   "bbbbb "
       
        set   l_objprocea   =   l_objproceb
        l_objprocea.processcode   =   "ccccc "
        msgbox   l_objproceb.processcode
end   sub


問題:
set   l_objprocea   =   l_objproceb
改變a後,為什麼b也跟著改變了
使用set語句,對像之間是傳址嗎?

我想得到b的一個幅本a,操作a而不會影響到b,要如何做呢?
发表于:2007-08-12 15:16:201楼 得分:0
msgbox   l_objproceb.processcode
得到的也是 "ccccc "
而不是 "bbbbb "
為什麼????????
发表于:2007-08-12 15:24:022楼 得分:0
我的理解,l_objproceb,l_objprocea相当于两个指针
set   l_objprocea   =   l_objproceb并非复制一个对象
而是让它们两个指向同一个对象
发表于:2007-08-12 15:46:463楼 得分:0
引用类型的对象默认传的是指向堆的地址。
发表于:2007-08-12 15:48:264楼 得分:0
如果得到副本,你看看对象有没有clone方法,有的话返回副本。
否则你可以重新有构造函数再建立一个对象,把信息全部设置成跟a相同的。


快速检索

最新资讯
热门点击