浅复制和深复制的区别?
发布网友
发布时间:2022-04-18 07:23
我来回答
共2个回答
热心网友
时间:2022-04-18 08:53
C++中,浅复制和深复制对于完全的值类型没有区别。
如果类或结构体的实例中含有指向不同属于一个对象的其它对象的指针时,那么浅复制和深复制的行为就有差异。浅复制仅复制对象本身(其中包括是指针的成员),这样不同被复制对象的成员中的对应非空指针会指向同一对象,被成员指针引用的对象成为共享的,无法直接通过指针成员安全地删除(因为若直接删除,另外对象中的指针就会无效,而访问无效指针是危险的;除非这些指针有引用计数或者其它手段确保被指对象的所有权);而深复制在浅复制的基础上,连同指针指向的对象也一起复制,代价比较高,但是相对容易管理。
Java/C#用引用类型代替指针类型,在语言的特定上下文中有特定的操作模式和约定。具体可以见LS两位提供的链接。
====
[原创回答团]
热心网友
时间:2022-04-18 10:11
浅层复制:只复制指向对象的指针。深层复制:复制引用对象本身。其他的一些特点你到猿人部落app里问下吧