请教一个类实例赋值问题

hwshws123 2010-12-28 10:48:28
a,b,c:TList

a:=TList.Create();
b:=a; //请问:这里的赋值是将a的地址给b,还是将a的实例复制给b ?

c:=TList.Create;
b.Add(c); //请问:这里增加的是c本身,还是c的一个复制?

谢谢!
...全文
100 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
madyak 2010-12-30
  • 打赏
  • 举报
回复
这个是复制的地址。指向同一个实例
ifengshow 2010-12-29
  • 打赏
  • 举报
回复
进来看看
ailonchang80 2010-12-29
  • 打赏
  • 举报
回复
Integer(b), Integer(c)看看地址就知道了
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zkroy36 的回复:]
你用个值,修改下,就可以知道是地址还是复制了!这样更有体会!
[/Quote]
+1
zkroy36 2010-12-28
  • 打赏
  • 举报
回复
你用个值,修改下,就可以知道是地址还是复制了!这样更有体会!
myfirenze 2010-12-28
  • 打赏
  • 举报
回复
b:=a将使a和b引用同一对象,a,b是引用这个 对象的两对象变量,如果a,b是这个对象的两个别名,而对象始终只有一个,只要ab中任一个调用Free,另一个就会变成无效的引用。赋值的引用,或者说是地址,而不复制实例。
b.Add(c); 是将c引用 的对象的地址回到其列表中,不是c引用的对象实例,
如果c中任一个调用Free,b列表保存的地址就是无效的地址。
一如当初 2010-12-28
  • 打赏
  • 举报
回复
直接用=号是引用对象,拷贝的话可以用Assign

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧