【发布时间】:2021-12-12 08:10:39
【问题描述】:
我四处搜索,似乎为了执行此操作,我需要更改我的 Base 类并想知道这是否是最好的方法。 例如, 我有一个基类:
class Base {}
然后是一长串派生类:
class Derived_1:: public Base {}
class Derived_2:: public Derived_1{}
...
...
class Derived_n:: public Derived_M{}
然后我还有另一堂课:
class DeepCopy
{
Base * basePtr;
public:
DeepCopy(DeepCopy & dc) {}
}
假设 Base 类和 Derived_x 类的复制构造函数编码正确,为 DeepCopy 编写复制构造函数的最佳方法是什么。我们如何知道要复制的对象的 basePtr 中的类?
我能想到的唯一方法是使用 RTTI,但使用一长串 dynamic_casts 似乎不正确。此外,它还需要 DeepCopy 了解 Base 类的继承层次。
我看到的另一种方法是here。但它需要 Base 和 Derived 类实现克隆方法。
那么有没有更简单、更标准的方法呢?
【问题讨论】:
-
如果你使用的是 POD 数据类型,我会说
memcpy,但既然你不是,你可以使用模板。
标签: c++ inheritance copy-constructor deep-copy