Maison >développement back-end >C++ >Comment copier en profondeur des objets polymorphes en C ?
Répliquer un objet polymorphe en C nécessite une attention particulière à sa nature dynamique. Face à une classe dérivée inconnue, la construction de copie conventionnelle ou la surcharge d'opérateurs devient peu pratique.
La solution suggérée consiste à implémenter une méthode virtuelle Clone() dans la classe de base :
class Base { public: virtual Base* Clone() = 0; };
Dans chaque classe dérivée, l'implémentation Clone() spécifie le type approprié :
class Derived1 : public Base { public: Derived1* Clone() { return new Derived1(*this); } };
Une approche alternative en C consiste à exploiter les constructeurs de copie et le retour covariant types :
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&) : ... {} };
En implémentant la méthode Clone() ou en utilisant des constructeurs de copie, C permet une copie approfondie d'objets polymorphes, prenant en compte à la fois l'incertitude de type dynamique et l'intégrité des données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!