老师给你们留了作业,你们班只有小A一个人会写,其他人都需要copy他的作业。
浅拷贝
如果你们都是通过浅拷贝来完成作业,那么就相当与“在你需要的时候,小A会把作业借给你”。
老师对小B说:“去把你的作业拿来给我看看”,小B赶快找小A借作业给老师看。
老师又要看小C的作业,小C也只能找小A借过来应付老师。
总之老师如果一 个一个的检查作业,你们都能应付,因为你们只有一本作业互相借着看一下就OK了。
如果老师说“全班把作业一起交上来”,那你们就完蛋了。
深拷贝
深拷贝就是每个人都实实在在的抄了一份作业,每个人的作业都是自己抄来的,
所以老师收全班的作业你们也不怕,要多少本就给他多少本
-
Q:什么时候会调用拷贝构造函数?
- 1.一个对象以值传递的形式传入函数体(实参传递给形参的实际上是实参的拷贝对象)
- 2.一个对象以值传递的形式从函数返回(该对象是函数里对象的拷贝)
- 3.一个对象通过另一个对象初始化 Q:如果我们没有定义拷贝构造函数会出现什么结果?
- 编译器将会生成一个默认的拷贝构造函数,这个拷贝构造函数完成对象的位拷贝(也就是浅拷贝) Q:如果存在某结构体A与某结构体B,它们的内部结构是完全一致的,只是内部结构名和结构体名不一样,用哪种方法能最快速实现拷贝?
- 一开始想到的是一个一个字段进行赋值,后来想想如果这个结构体字段非常多,这样做就没有效率。
- 两个结构体内部结构一致,那么它们的存储方式也是一致的,那么可以使用内存复制的方式实现结构体之间的拷贝。
- 即memcpy(&test1,&test2,sizeof(test2的结构体名))