在 C 中複製多態性物件需要仔細考慮其動態性質。當面對未知的衍生類別時,傳統的複製構造或運算子重載變得不切實際。
建議的解決方案包括在基類中實現虛擬Clone() 方法:
class Base { public: virtual Base* Clone() = 0; };
在每個派生類,Clone() 實現指定適當的類型:
class Derived1 : public Base { public: Derived1* Clone() { return new Derived1(*this); } };
另一種 C方法是利用複製建構函數和協變返回類型:
class Base { public: virtual Base* Clone() = 0; }; class Derivedn : public Base { public: Derivedn* Clone() { return new Derivedn(*this); // Covariant return type } private: Derivedn(const Derivedn&) : ... {} };
透過實作Clone() 方法或利用複製建構函數,C 允許深度複製多態性對象,從而適應動態類型不確定性和數據完整性。
以上是如何在 C 中深度複製多型物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!