C 語言中的多態物件複製
問題:
問題:在C 中,如何實作深度物件複製當確切的衍生類別建立時,建立基底類別實例的副本未知?
答案:
利用虛擬克隆方法在每個衍生類別中實作 Clone() 方法,以建立對應衍生類別的新實例並複製所有必需的資料成員。
利用協變回傳類型為每個衍生類別「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中文網其他相關文章!