您现在的位置:首页 >> 基础算法 >> window基础 >> 内容

Delphi之对象复制赋值

时间:2011/9/3 15:38:29 点击:

  核心提示:有A对象 B对象 A:=B;//A和B指向同一地址,操作A的属性和操作b的属性将是同一个东西,浅复制。A.Assign(B);//把对象属性依次复制过来,深复制。有句很形象的话:一个改名字,一个生小孩...
有A对象 B对象
A:=B;//A和B指向同一地址,操作A的属性和操作b的属性将是同一个东西,浅复制。
A.Assign(B);//把对象属性依次复制过来,深复制。
有句很形象的话:一个改名字,一个生小孩。

直接操作内存
move(a, b, SizeOf(a));
Move(b,a,a.InstanceSize);
CopyMemory(@a,@b,sizeof(a))
这种方法对于长串、动态数组、Variant、OleVariant、Interface和dispinterface等生存期自管理的数据类型,会导致严重错误。

PS:TPersistent.Assign方法
Procedure Assign(Source:TPersistent);virtual;
这个过程用于把Soruce参数指定的对象的的所有属性赋值给自己,它的功能实际上是由AssignTo完成的。而TPersistent的AssignTo方法并未实现上述功能,只是由其派生类重载的AssignTo方法实现。

作者:网络 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 盒子文章(www.2ccc.com) © 2020 版权所有 All Rights Reserved.
  • 沪ICP备05001939号