为什么Java不支持像C++那样的复制构造函数呢?
发布于 2009-05-06 02:45:49
我认为这个问题的答案非常有趣。
首先,我相信在Java中所有的对象都在堆上,虽然你没有指针,但你确实有“引用”。引用有复制语法,java在内部跟踪引用计数,这样它的垃圾收集器就知道什么是安全的。
由于您仅通过可复制引用访问对象,因此需要复制对象的实际次数大大减少(例如,在C++中,仅将对象(按值)传递给函数会导致复制构造新对象,而在Java语言中,仅传递对对象的引用)。设计者可能认为clone()就足以满足剩下的用法。
发布于 2009-05-06 02:46:21
这只是我的观点(我相信有一个合理的答案)
当您通过值发送或返回类的实例时,C++中的复制构造函数主要是有用的,因为这是复制构造函数被透明激活的时候。
因为在Java中,所有的东西都是通过引用返回的,而VM是面向动态分配的,所以没有理由使用复制构造函数的复杂性。
此外,由于一切都是通过引用实现的,因此开发人员通常必须提供自己的实现和如何克隆字段的决策。
发布于 2009-05-06 02:39:01
我猜他们认为你可以只做一个clone()方法?
https://stackoverflow.com/questions/827785
复制相似问题