Jenis Pulangan Kovarian dalam Fungsi Maya C
Dalam C , kelas yang diwarisi boleh melaksanakan fungsi maya dengan jenis pulangan yang berbeza. Walau bagaimanapun, jenis pulangan ini mestilah kovarian dengan jenis pulangan asal.
Kovarian bermakna jenis pulangan dalam kelas terbitan adalah sekurang-kurangnya sama dengan jenis pulangan dalam kelas asas. Contohnya, jika fungsi kelas asas mengembalikan penuding Asas, fungsi kelas terbitan boleh mengembalikan penuding Terbitan.
Ini dibenarkan kerana sebarang penuding kepada objek kelas terbitan boleh ditukar secara tersirat kepada penuding kepada kelas asas objek. Oleh itu, panggilan kepada fungsi maya dalam kelas asas sentiasa boleh mengembalikan penunjuk kepada objek kelas asas, walaupun pelaksanaan kelas terbitan mengembalikan penunjuk kepada objek kelas terbitan.
Pertimbangkan contoh berikut:
class Base { public: virtual ~Base() {} virtual Base* clone() const = 0; }; class Derived: public Base { public: virtual Derived* clone() const { return new Derived(*this); } };
Dalam contoh ini, kelas Base mentakrifkan klon fungsi maya tulen yang mengembalikan penuding Base. Dalam kelas Derived, fungsi klon ditindih untuk mengembalikan penunjuk Derived. Ini dibenarkan kerana Derived ialah kelas terbitan bagi Base dan penunjuk Derived boleh ditukar secara tersirat kepada penunjuk Base.
Atas ialah kandungan terperinci Bilakah Fungsi Maya C Boleh Mempunyai Jenis Pulangan Kovarian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!