大家好,我需要深深地克隆一些引用其他自定义对象的自定义对象,这些对象可能会引用其他cust ...等等,等等。

目前,我正处于文档和概念阶段,所以要让它正确。

Q1。当您可以编写强烈键入的自定义函数时,为什么要实现iClonable并返回对象,以返回正确的对象类型的克隆?

Q2。这些对象并不巨大,我不介意进行初始繁重的抬起复制每个元素,但是懒惰,我可以成员wiseclone对象,然后再次为引用成员添加特定的代码,这将产生铸造的需求,所以什么更有效。就CPU周期而言?

任何想法,观点和沉思都受到欢迎。

有帮助吗?

解决方案

536349 出于不实施明显的原因;基本上,您可以定义自己的(强烈键入)界面并使用它,只要它正确地记录了它创建深副本,我就不会看到任何问题。

其他提示

接口的目的是允许人们在支持接口的对象上操作,而不必担心对象实际是什么。不知道Clone.clone实际上将在任何给定的对象上做什么,只是知道一个对象支持可lon的对象是没有用的。

对于收集类型,使用受保护的基本方法是有用的,并使他们拥有一种使其公开的派生类型(以这种方式这样做可以允许人们从集合中派生可克隆和不可锁定类型)。拥有诸如字典支持克隆方法之类的东西要比包括复制构造函数更好,因为对复制构造函数的参数可能是源自字典的一种类型,但在内部有很大不同。

为了使克隆接口有用,它必须包括一个属性,通过这些属性可以说出它们对克隆的感觉(例如-1-类型是不变的,不需要克隆; -2-克隆可能会破裂它; -3-类型支持克隆),并指定深锁操作将检查所有对象以确保它们不介意克隆,如果是这样,它将克隆所有嵌套的可突变对象。不幸的是,框架中没有类似的东西。

如果一组派生的类型包含可克隆和不可锁定的版本,则具有一个界面来表明对象是可包隆的。如果可能的类型的衍生物可能无法支持克隆,则应保护该类型的克隆方法;该类型的可克隆版本应从中得出,但其他类型应源自不可限制的版本。

例如,一个人可以具有带有派生类型的类型小部件,包括ClonableWidget和Superwidget(不可插入)。 SuperWidget可能具有派生类型的cloneablesuperwidget(以及其他一些克隆的可能会破裂的)。如果一个人希望能够与类型窗口小部件的所有可克隆衍生物一起工作,则必须检查对象从窗口小部件派生的,并且它是可论到的。将可克隆的衍生物添加到可lon式的衍生物中,将允许一个人检查这样的对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top