Rumah >pembangunan bahagian belakang >C++ >Mengapa Ralat 'Panggilan Fungsi Maya Tulen' Menyebabkan Ranap Program?
Memahami Ranap "Panggilan Fungsi Maya Tulen"
Dalam pengaturcaraan, ralat "panggilan fungsi maya tulen" kadangkala boleh menyebabkan atur cara ranap secara tiba-tiba. Ralat ini timbul apabila percubaan dibuat untuk memanggil fungsi maya tulen semasa pembinaan atau pemusnahan objek.
Fungsi Maya Tulen
Fungsi maya tulen ialah fungsi ahli bagi kelas abstrak yang hanya mempunyai pengisytiharan tetapi tiada pelaksanaan. Ia memaksa kelas terbitan untuk melaksanakan versi fungsi mereka sendiri.
Penghadan Pembina dan Pemusnah
Fungsi pembina dan pemusnah dipanggil semasa pemulaan dan pemusnahan objek, masing-masing. Semasa fungsi khas ini, panggilan fungsi maya adalah dilarang kerana:
Sumber Ranap
Ranap "Panggilan fungsi maya tulen" berlaku apabila:
Contoh
Pertimbangkan kod ini:
class Base { public: Base() { reallyDoIt(); } void reallyDoIt() { doIt(); } // DON'T DO THIS virtual void doIt() = 0; }; class Derived : public Base { void doIt() {} }; int main(void) { Derived d; // This will cause "pure virtual function call" error }
Dalam contoh ini, panggilan ke reallyDoIt() dalam Pangkalan pembina cuba memanggil fungsi maya tulen doIt(). Memandangkan pembina sedang dipanggil, objek kelas terbitan belum lagi dibina dan ralat "panggilan fungsi maya tulen" berlaku.
Resolusi
Untuk mengelakkan ini ranap sistem, elakkan memanggil fungsi maya tulen daripada pembina atau pemusnah. Sebaliknya, pastikan kelas terbitan menyediakan pelaksanaannya sendiri sebelum memanggil fungsi maya tulen.
Atas ialah kandungan terperinci Mengapa Ralat 'Panggilan Fungsi Maya Tulen' Menyebabkan Ranap Program?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!