深拷贝与浅拷贝的区别

转载 2016年05月30日 17:51:05
拷贝有两种:深拷贝,浅拷贝
当出现类的等号赋值时,会调用拷贝函数
在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制。当数据成员中没有指针时,浅拷贝是可行的。
但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象。
所以,这时,必须采用深拷贝。
深拷贝与浅拷贝的区别就在于深拷贝会在堆内存中另外申请空间来储存数据,从而也就解决了指针悬挂的问题。
简而言之,当数据成员中有指针时,必须要用深拷贝。

相关文章推荐

C#浅拷贝深拷贝

  • 2014-02-27 14:26
  • 24KB
  • 下载

复杂链表的复制(注意深拷贝和浅拷贝的区别)(特殊的双向链表)

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,...

C++深拷贝浅拷贝

  • 2012-05-30 21:17
  • 119KB
  • 下载

深拷贝和浅拷贝(copy)的区别

所谓copy就是在原有对象的基础上产生一个副本对象,遵循最关键的两点原则:      1. 改变原对象的属性和行为不会对副本对象产生任何影响      2. 改变副本对象的属性和行为不会对原对象产...

C++之深拷贝和浅拷贝

  • 2015-09-09 19:06
  • 128KB
  • 下载

C++浅拷贝和深拷贝的区别

c++默认的拷贝构造函数是浅拷贝 浅拷贝就是对象的数据成员之间的简单赋值,如你设计了一个没有类而没有提供它的复制构造函数,当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝,如: cla...

Python FAQ2:赋值、浅拷贝、深拷贝的区别?

在写Python过程中,经常会遇到对象的拷贝,如果不理解浅拷贝和深拷贝的概念,你的代码就可能出现一些问题。所以,在这里按个人的理解谈谈它们之间的区别。 一、赋值(assignment) 在《P...

Pytoh随笔之浅拷贝与深拷贝的区别

在Python中,对变量进行赋值操作,实际是一个浅拷贝动作,将赋值号右边的对象引用赋给了赋值号左边的变量。 s = "abcdefg" 如上面这句代码,实际是先创建一个字符串对象,内容为abcde...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)