课程
/后端开发
/C++
/C++远征之封装篇(下)
教程里,深拷贝的时候,arr和arr1得m_pArr的值应该是不一样的啊,为什么用了printArr()函数之后,arr的m_pArr[i]和arr1的m_pArr[i]都是0,1,2,3,4,这个不明白
2016-10-28
源自:C++远征之封装篇(下) 3-3
正在回答
哈哈,是这样子的。
arr中的m_pArr和arr1中的m_pArr确实是不一样的,因为它们各自指向不同的内存,可是,深拷贝就硬是把,arr中的m_pArr这个指针变量所指向的内存中的值,给了arr1中的m_pArr所指向的内存单元。
还有就是,最后在黑框中显示出来的内容,就是这两个指针变量所指向内存中的内容,所以当然会一样啦。
童鞋,arr和arr1的m_pArr的值应该要一样,因为拷贝就是把一个对象的数据成员赋值给另一个,,,尔深拷贝与浅拷贝的区别在于,浅拷贝只是把对象的数据成员的地址传给另一个对象,而深拷贝是把两个对象的数据成员的地址指向的内容进行传递。浅拷贝是对指针进行操作,深拷贝对指针指向的内容进行操作。
慕粉3841850 提问者
举报
封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通