首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Java没有复制构造函数?

为什么Java没有复制构造函数?
EN

Stack Overflow用户
提问于 2009-05-06 02:34:00
回答 6查看 33.4K关注 0票数 70

为什么Java不支持像C++那样的复制构造函数呢?

EN

回答 6

Stack Overflow用户

发布于 2009-05-06 02:45:49

我认为这个问题的答案非常有趣。

首先,我相信在Java中所有的对象都在堆上,虽然你没有指针,但你确实有“引用”。引用有复制语法,java在内部跟踪引用计数,这样它的垃圾收集器就知道什么是安全的。

由于您仅通过可复制引用访问对象,因此需要复制对象的实际次数大大减少(例如,在C++中,仅将对象(按值)传递给函数会导致复制构造新对象,而在Java语言中,仅传递对对象的引用)。设计者可能认为clone()就足以满足剩下的用法。

票数 10
EN

Stack Overflow用户

发布于 2009-05-06 02:46:21

这只是我的观点(我相信有一个合理的答案)

当您通过值发送或返回类的实例时,C++中的复制构造函数主要是有用的,因为这是复制构造函数被透明激活的时候。

因为在Java中,所有的东西都是通过引用返回的,而VM是面向动态分配的,所以没有理由使用复制构造函数的复杂性。

此外,由于一切都是通过引用实现的,因此开发人员通常必须提供自己的实现和如何克隆字段的决策。

票数 2
EN

Stack Overflow用户

发布于 2009-05-06 02:39:01

我猜他们认为你可以只做一个clone()方法?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/827785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档