在 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中文网其他相关文章!