核心提示:有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方法实现。