首页 > 后端开发 > C++ > 当派生类未知时,如何在 C 中深度复制多态对象?

当派生类未知时,如何在 C 中深度复制多态对象?

DDD
发布: 2024-12-02 02:28:10
原创
657 人浏览过

How to Deep Copy a Polymorphic Object in C   When the Derived Class is Unknown?

C 语言中的多态对象复制

问题:

在 C 中,如何实现深度对象复制当确切的派生类创建时,创建基类实例的副本未知?

答案:

利用虚拟克隆方法

要有效地深度复制多态对象,可以使用以下方法使用:

  1. 定义一个虚拟的 Clone() 方法基类 Base。
  2. 在每个派生类中实现 Clone() 方法,以创建相应派生类的新实例并复制所有必需的数据成员。

利用协变返回类型

但是,有一个более“C”做法:

  1. 为每个派生类定义一个复制构造函数。
  2. 重写每个派生类中的 Clone() 方法,使用复制构造函数返回相应派生类的新实例.

协变返回示例类型:

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

class Derivedn : public Base
{
public:
  // Call to copy constructor is implicit
  Derivedn* Clone()
  {
    return new Derivedn(*this);
  }

private:
  Derivedn(const Derivedn&) : ... {}
};
登录后复制

这种方法简洁,符合 C 中的多态性原则。它允许无缝深度复制对象,而不需要在 Clone() 方法中显式成员复制。

以上是当派生类未知时,如何在 C 中深度复制多态对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板