C++中何为深度COPY???

Grrr 2001-11-15 09:30:56
看到一些书上提到深度拷贝,请详细说明!谢谢!!!
...全文
130 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yake 2001-11-16
  • 打赏
  • 举报
回复
比如說:你在一個類的構造函數中為一根指針申請了資源,而在析構函數中釋放資源(實際情況下,應該避免這樣做),而你又沒有為這個類寫一個拷貝構造函數,那麽,在必要的時候(比如在值傳遞參數時),編譯器會按位拷貝,這就是所謂的"淺拷貝",因爲並未替拷貝分配資源,那麽就有兩根不同的指針指向同一塊資源,當兩根指針之一被delete掉(比如拷貝被析構),那麽資源也不存在了,那另外一根指針就成了"野指針",牠的資源已經不存在,而牠仍然被認爲是有效的."深拷貝"在這個例子中的意思就是要替拷貝分配資源,使兩根指針各自指向自己的資源.
mthcy 2001-11-16
  • 打赏
  • 举报
回复
Yake(不要打疯子,也许他是你的兄弟……)说的有理
Mubin_Du 2001-11-16
  • 打赏
  • 举报
回复
深拷贝就是在内存中存在两份,浅拷贝就是一份。
holyfire 2001-11-16
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/read_article.asp?id=10638
sleep_bug 2001-11-16
  • 打赏
  • 举报
回复
essential c++第四章有详细解答。

但说法不同。
感觉比钱能说的简洁透彻,例子也很短很典型(记得老钱的例子好长呀!看的头昏)。
clippy 2001-11-15
  • 打赏
  • 举报
回复
深拷贝一般需要自己编写有关操作
具体问题具体处理
Grrr 2001-11-15
  • 打赏
  • 举报
回复
还是不大明白,拜托了,再详细点!
Kaye 2001-11-15
  • 打赏
  • 举报
回复
简单地说,就是浅拷贝的时候你用已有的对象生成新的对象的时候,新对象里的指针将直接从已有的对象赋值,也就是指向已有的对象的成员指针指向的地址,原删除原对象的时候新对象的成员指针就悬挂了!当定义拷贝构造函数的时候,可以在构造函数中对指针做处理,分配内存,然后拷贝原对象成员指针指向的内容,这样解决了指针问题!
zjlsct 2001-11-15
  • 打赏
  • 举报
回复
深拷贝复制了资源,使不同的对象拥有各自的资源,不会因为其中一个的析构而影响另一个
Grrr 2001-11-15
  • 打赏
  • 举报
回复
那浅拷贝和浅拷贝对指针数据成员的处理有何不同,我只知道浅拷贝会出现指针悬挂问题,而深拷贝不会,为什么????请详细说明!!!谢谢!
yixudong 2001-11-15
  • 打赏
  • 举报
回复
前面的一种情况叫浅拷贝,后一种叫深拷贝。
yixudong 2001-11-15
  • 打赏
  • 举报
回复
sorry
not相似but相同
yixudong 2001-11-15
  • 打赏
  • 举报
回复
c++中的类有一种叫做拷贝构造函数的成员函数,如果你在c++原程序中不做定义和声明,那么当你做以下的操作:

classA A;
B=A;

时B和A是同一对象;如果定义了拷贝构造函数,B为与A的内容相似的新对象。

(这些概念在钱能的《c++程序设计》中有详细的介绍。)


moonmhb 2001-11-15
  • 打赏
  • 举报
回复
I want to know ,too

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧