【发布时间】:2015-04-14 08:37:18
【问题描述】:
我正在浏览 Java 的“特殊”功能,并开始阅读克隆。
所以目前我的理解是克隆可用于获取对象的相同副本。为此,您需要实现 Cloneable 接口并覆盖 Object 的 clone 方法(这在 IMO 中真的很奇怪)
我的问题更多是针对 C++ 和 Java 之间的比较。当我们已经支持复制构造函数时,为什么需要一个单独的克隆方法。克隆被认为是必须具备的特征是否有历史原因?
PS:我不是在问是否需要像what is the need of cloning a object in Java 那样“克隆”,我问的是当 Java 已经支持复制构造函数时需要 Cloneable 和 clone 方法。
【问题讨论】:
-
嗯,它让
clone()使用更少的魔法。 -
在 C++ 中,
clone()通常与多态一起使用,以从指针或对其基类的引用中获取派生类型的副本。所以它对复制构造函数有不同的用途。不知道Java有没有并行。 -
@juanchopanza:这就是它在 Java 中的使用方式。但是,我看不出如何在 C++ 中以类型安全的方式完成它。