相关疑难解决方法(0)

在C++中复制多态对象

我有Base派生的基类Derived1,Derived2Derived3.

我为其中一个派生类构建了一个实例,我将其存储为Base* a.我现在需要制作一个我将存储的对象的深层副本Base* b.

据我所知,复制类的正常方法是使用复制构造函数并重载operator=.但是,因为我不知道是否a是类型Derived1,Derived2或者Derived3,我想不出使用复制构造函数的方法operator=.我能想到的唯一方法是干净利落地完成这项工作:

class Base
{
public:
  virtual Base* Clone() = 0;

};
Run Code Online (Sandbox Code Playgroud)

Clone派生类中的实现如下:

class Derivedn : public Base
{
public:
  Base* Clone() 
  {
    Derived1* ret = new Derived1;
    copy all the data members
  }
};
Run Code Online (Sandbox Code Playgroud)

Java倾向于使用Clone相当多的C++方式更多吗?

c++ clone

35
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

clone ×1