对象 class 的 clone() 方法如何工作?
How clone() method of object class works?
对象 class clone() 方法具有创建子实例 class 并将源对象的状态复制到新创建的实例的本机实现。
问题:
- 对象 class 的 clone() 方法不调用子 class 的构造函数,那么它如何创建子 class 的实例?
你的定义是错误的。 clone() 方法不会创建子 class 的实例,而是在调用 clone() 方法的地方创建 class 的实例。此实例包含其所有当前值。因此,它不会调用子 class 的构造函数,但是会调用它自己的 class.
的构造函数
克隆是在 JVM 中以依赖于实现的方式实现的。在 OpenJDK 中,克隆在第 627 行 jvm.cpp 中实现为 jvm_clone
。这会为对象分配内存并从调用它的对象复制数据。
创建实例和调用构造函数是 JVM 级别的独立操作,因此本机实现不需要在创建实例后调用任何构造函数。通过在 C++ 中使用较低级别的 JVM 方法,它不需要调用构造函数。
对象 class clone() 方法具有创建子实例 class 并将源对象的状态复制到新创建的实例的本机实现。
问题:
- 对象 class 的 clone() 方法不调用子 class 的构造函数,那么它如何创建子 class 的实例?
你的定义是错误的。 clone() 方法不会创建子 class 的实例,而是在调用 clone() 方法的地方创建 class 的实例。此实例包含其所有当前值。因此,它不会调用子 class 的构造函数,但是会调用它自己的 class.
的构造函数克隆是在 JVM 中以依赖于实现的方式实现的。在 OpenJDK 中,克隆在第 627 行 jvm.cpp 中实现为 jvm_clone
。这会为对象分配内存并从调用它的对象复制数据。
创建实例和调用构造函数是 JVM 级别的独立操作,因此本机实现不需要在创建实例后调用任何构造函数。通过在 C++ 中使用较低级别的 JVM 方法,它不需要调用构造函数。