Penyalinan Objek Polimorfik dalam C
Soalan:
Dalam C , bagaimana boleh deep salinan contoh kelas asas dibuat apabila kelas terbitan tepat adalah tidak diketahui?
Jawapan:
Menggunakan Kaedah Klon Maya
Untuk menyalin secara mendalam objek polimorfik, pendekatan berikut boleh digunakan:
Menggunakan Pulangan Kovarian Taip
Walau bagaimanapun, terdapat более "C " pendekatan:
Contoh dengan Pulangan Kovarian Jenis:
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&) : ... {} };
Pendekatan ini ringkas dan mematuhi prinsip polimorfisme dalam C . Ia membenarkan penyalinan objek dalam lancar tanpa memerlukan penyalinan ahli eksplisit dalam kaedah Klon().
Atas ialah kandungan terperinci Bagaimana untuk Menyalin Dalam Objek Polimorfik dalam C Apabila Kelas Terbitan Tidak Diketahui?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!