谁学过C++,我问个clone的问题

谁学逆向工程 2016-08-05 12:10:49
从C++的角度对比一下 Java 的 clone。
Java的浅复制是复制指针?然后两个指针指向同一个地址?
Java的深复制是 operator =(指针) 这种?重载复制运算符?然后接收一个指针的参数?
Java的深复制是不是这个思路:
void * operator=(void* t)
{
void* p= new 某某;
p->成员 = t->成员;
return p;
}
...全文
127 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_08_06_02 2016-08-21
  • 打赏
  • 举报
回复
get it
oh_Maxy 2016-08-05
  • 打赏
  • 举报
回复
clone就是完全的复制,包括内存空间都复制一份。 比如a对象clone产生b对象,此时对b的操作,不会影响a。 这里要注意的是,如果a对象里有一个对象的引用,比如a.k 属性是一个自定义对象,此时对a的clone,不会将a.k所指向的内存也clone的,只会clone一个k的索引。这时候b.k的操作,会影响a.k的内容。
Freefish1994 2016-08-05
  • 打赏
  • 举报
回复
浅复制也不是复制指针吧。。是在堆空间里新建一个和原来对象大小一样的空间,将属性复制过去,两个引用指向两个地址

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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