Polymorphes Objektkopieren in C
Frage:
Wie kann in C eine tiefe Eine Kopie einer Instanz einer Basisklasse wird erstellt, wenn die genaue abgeleitete Klasse vorhanden ist unbekannt?
Antwort:
Verwendung der Virtual-Clone-Methode
Um ein polymorphes Objekt effektiv tief zu kopieren, kann der folgende Ansatz verwendet werden verwendet werden:
Verwenden Sie die kovariante Rückgabe Typ
Allerdings gibt es ein zusätzliches „C“ Ansatz:
Beispiel mit kovarianter Rendite Typ:
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&) : ... {} };
Dieser Ansatz ist prägnant und entspricht den Prinzipien des Polymorphismus in C. Es ermöglicht ein nahtloses tiefes Kopieren von Objekten, ohne dass ein explizites Kopieren von Mitgliedern in der Clone()-Methode erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann ich ein polymorphes Objekt in C tief kopieren, wenn die abgeleitete Klasse unbekannt ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!