C++ 复制具有多态性的对象
C++ Copying objects with polymorphism
我想用 c++ 复制对象。问题是我派生了具有多态性的类,如下面的伪代码所示:
class BaseCl { some virtual functions };
class DerivedClass : public BaseCl { ... };
。
BaseCl * b1 = new DerivedClass();
BaseCl * b2 = new "copy of b1"; (just pseudocode)
问题是最后一行:
我想复制类"BaseCl"的对象,但由于多态性,副本必须与"DederdClass"的原始对象一样。
最好的方法是什么?
非常感谢,任何帮助都值得赞赏。
编辑:问题已解决:
插入:
virtual BaseCl *clone() = 0;
在基类中和
DerivedCl *clone() {return new DerivedCl(*this);}
在派生类中。谢谢大家。
您需要在 BaseC1 中定义一个创建克隆的函数。像这样:
class BaseCl
{
virtual BaseCl* clone() {return new BaseC1(*this);}
};
class DerivedClass : public BaseCl
{
virtual BaseCl* clone() {return new DerivedClass(*this);}
};
运行时多态性的关键是操作必须在最派生的对象中实现,因为它是知道执行它们所必须知道的一切的对象。所有基必须公开要由基指针调用的虚函数。
您可以在基本级别构建虚拟BaseCl* clone()
函数,并将其重写为派生类以return new DerivedClass(*this)
相关文章:
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 创建基类指针的向量并将派生类对象传递给它(多态性)
- C++多态性:有没有办法找到对象成员函数的地址?
- C++ 被此代码与多态性、指针和对象切片混淆
- 具有多态性的对象声明中的逗号
- 使用多态性时在子对象之间进行转换?
- 多态性的面向对象方法
- 如何使用多态性将相同的操作应用于具有相同基类的不同对象的unordered_sets
- 使用数组对对象的编译时多态性是否可行?
- 多态性并获取C++中的对象类型
- 多态性:通过类文本或对象访问静态成员
- 多态性和对象存储
- C++ 复制具有多态性的对象
- 数组中对象的C++多态性
- 类成员对象的多态性
- C++对象多态性问题
- 如何在具有多态性的函数外部创建对象
- 我可以使用多态性将不同的对象存储在具有C++的数组中吗?
- 多态性c++,当对一个对象进行更改时,所有对象都会更改