为了账号安全,请及时绑定邮箱和手机立即绑定

深拷贝问题

教程里,深拷贝的时候,arr和arr1得m_pArr的值应该是不一样的啊,为什么用了printArr()函数之后,arr的m_pArr[i]和arr1的m_pArr[i]都是0,1,2,3,4,这个不明白

正在回答

2 回答

哈哈,是这样子的。

arr中的m_pArr和arr1中的m_pArr确实是不一样的,因为它们各自指向不同的内存,可是,深拷贝就硬是把,arr中的m_pArr这个指针变量所指向的内存中的值,给了arr1中的m_pArr所指向的内存单元。

还有就是,最后在黑框中显示出来的内容,就是这两个指针变量所指向内存中的内容,所以当然会一样啦。

0 回复 有任何疑惑可以回复我~

童鞋,arr和arr1的m_pArr的值应该要一样,因为拷贝就是把一个对象的数据成员赋值给另一个,,,尔深拷贝与浅拷贝的区别在于,浅拷贝只是把对象的数据成员的地址传给另一个对象,而深拷贝是把两个对象的数据成员的地址指向的内容进行传递。浅拷贝是对指针进行操作,深拷贝对指针指向的内容进行操作。

0 回复 有任何疑惑可以回复我~
#1

慕粉3841850 提问者

m_pArr是地址,深拷贝时在拷贝构造函数里,不是给当前指针先分配了一段内存了吗,即m_Aprr= new int[m_icount],那么arr中的m_pArr和arr1中的m_pArr应该是不一样的,为什么教程里的是一样的?
2016-10-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

深拷贝问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信