赋值、浅拷贝、深拷贝的区别有哪些?
我用java实例来给你演示一下://头class Head{} //身体class Body{}//脚class Footer{}//人class Person{String name;Head head;Body body;Footer footer;}赋值Person myself = new Person(); //创建一个我自己Person son = myself ; //我是我妈妈的儿子【引用】Person husband = myself ;//我是我老婆的老公【引用】上面三个变量: myself、son 、husband 都是指代我自己,我在现实中只有一个,所以三个变量引用的是同一个对象(这儿是人),变量相当于称呼浅拷贝Person myself = new Person(); //创建一个我自己Person copy = new Person(); //创建一个副本copy.head = myself.head;copy.body = myself.body;copy.footer = myself.footer;myself和copy引用的不是同一个对象,但是myself中的属性引用的是同一个,即: 共用了head、body、footer很明显浅拷贝容易引起很多问题 。
2个对象不同,但是对象的属性引用相同深拷贝Person myself = new Person(); //创建一个我自己Person deepCopy = new Person(); //创建一个副本myself 与deepCopy两个对象不同(引用地址不同)并且两个对象中的属性name、head、body、footer都不同 。
【C深拷贝与浅拷贝的区别,深拷贝和浅拷贝的区别】如何理解C中的深拷贝和浅拷贝?
关于C对象的拷贝,大部分时间我们用的都是浅拷贝,比如赋值符号(“=”)以及memcpy()等 。那么既然浅拷贝这么简单,为什么还需要深拷贝呢?两者之间的区别又是什么呢?两者分别在什么情况下使用呢?可能很多人写了很久的代码,都还只知道对象赋值而不知道深拷贝,导致很多时间出现莫名bug而且找不到原因 。今天就让我们深入的来了解一下两者的区别 。
浅拷贝例如:class MyClass{public: MyClass(int x); ~MyClass(); int a ;private:};MyClass::MyClass(int x){ this-
推荐阅读
- 初中生科技创新作品与技巧共62页,中学生科技创新作品
- 小猫益生菌吃多少钱,益生菌小猫一天吃多少钱
- 暑期狗狗培训班都教啥,深圳上门训狗多少钱
- 褐菇怎么做好吃?有什么功效与作用?
- 爱你的男人与不爱你的男人的区别
- 《最后生还者》重制版与PS4版新对比 画面更逼真
- 多边形内角和公式,一位同学在进行多边形内角和计算时求得的内角和为1125与答
- 奥比岛用音乐卷互换东西怎么打开,吉比特的业绩老护法与增长新路径
- 荣耀10与2s哪个比较好,荣耀10和小米MIX
- 三星note8跟s9哪个好,三星note8和三星s9