前言
很多人其实也看到过对象拷贝与句柄拷贝,其实这里的对象拷贝相当于深拷贝,句柄拷贝相当于浅拷贝。
1)浅拷贝
浅拷贝即句柄拷贝,不复制对象,只复制了句柄。只拷贝对象中的数据变量,而对于对象中的数据操作(一般为任务和函数)和其中定义的其他类的句柄,采用类似“引用”的方式,浅拷贝前后共用同一内存空间。
这时对p2中的a1句柄做操作后将会影响p1中的a1。
BusTrans p1,p2; //声明2个句柄
p1 = new; //p1创建对象
p2 = new p1; //p2创建对象,同时对p1浅拷贝
2)深拷贝
深拷贝即对象拷贝,对对象中的所有成员变量(包括数据变量、数据操作和其他句柄)统一分配新的内存空间。
这时对p2中的a2句柄做操作后将会不会影响p1中的a1。
BusTran p1,p2; //声明2个句柄
p1 = new; //b1创建对象
p2 = new; //b2创建对象
p2.copy(p1); //深拷贝,自定义copy函数