首頁 >後端開發 >C++ >當衍生類別未知時,如何在 C 中深度複製多型物件?

當衍生類別未知時,如何在 C 中深度複製多型物件?

DDD
DDD原創
2024-12-02 02:28:10659瀏覽

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

C 語言中的多態物件複製

問題:

問題:

在C 中,如何實作深度物件複製當確切的衍生類別建立時,建立基底類別實例的副本未知?

答案:

利用虛擬克隆方法
  1. 要有效地深度複製多態性對象,可以使用以下方法使用:
定義一個虛擬的Clone() 方法基底類別Base。

在每個衍生類別中實作 Clone() 方法,以建立對應衍生類別的新實例並複製所有必需的資料成員。

利用協變回傳類型
  1. 但是,有一個более「C」做法:
為每個衍生類別「C」做法:

為每個衍生類別「C」做法:

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&) : ... {}
};

為每個衍生類定義一個複製建構函式。

重寫每個衍生類別中的Clone() 方法,使用複製建構子傳回對應衍生類別的新實例.協變傳回範例型別:這種方法簡潔,符合C 中的多態性原則。它允許無縫深度複製對象,而不需要在 Clone() 方法中明確成員複製。

以上是當衍生類別未知時,如何在 C 中深度複製多型物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn