Rumah >pembangunan bahagian belakang >C++ >Mengapakah \'= 0\' Digunakan untuk Memulakan Fungsi Maya Tulen dalam C ?
Menjelaskan Permulaan Fungsi Maya Tulen
Dalam C , fungsi maya tulen diisytiharkan menggunakan sintaks "virtual void fun() = 0; ". Inisialisasi bukan konvensional dengan "0" telah menimbulkan persoalan tentang tujuan dan keperluannya.
Latar Belakang: Fungsi Maya dan Vtable
Fungsi maya membenarkan kelas mewarisi kaedah dengan pelbagai pelaksanaan berdasarkan jenis objek. C menggunakan jadual maya (vtables) untuk menyimpan alamat kaedah ini untuk setiap objek. Apabila fungsi dipanggil, entri vtable untuk fungsi itu menunjukkan kepada pelaksanaan kaedah yang sesuai.
Kepentingan "0" Inisialisasi
Pengawalan maya tulen fungsi dengan "0" tidak penting untuk pelaksanaan vtables. Walau bagaimanapun, Bjarne Stroustrup, pencipta C , memilih sintaks ini kerana ia menyediakan cara yang mudah untuk mencapai dua matlamat penting:
1. Membezakan Fungsi Maya Tulen
Permulaan "0" menandakan bahawa fungsi adalah maya tulen, bermakna ia mesti ditindih dalam kelas terbitan. Ini menghalang penggunaan fungsi maya tulen secara langsung dalam kelas asas dan menguatkuasakan polimorfisme yang betul.
2. Mengelakkan Kekaburan
Tanpa sintaks khusus untuk fungsi maya tulen, kekeliruan boleh timbul apabila cuba mentakrifkan fungsi dengan nilai lalai 0. Penggunaan "0" secara eksklusif untuk fungsi maya tulen menjelaskan tujuannya dan memberikan perbezaan yang jelas daripada fungsi biasa.
Nota: Memulakan fungsi maya tulen dengan "0" tidak menetapkan entri vtable yang sepadan kepada NULL. Pelaksanaan vtables berbeza-beza merentasi pengkompil yang berbeza dan mungkin melibatkan teknik lain untuk mengendalikan fungsi maya tulen.
Atas ialah kandungan terperinci Mengapakah \'= 0\' Digunakan untuk Memulakan Fungsi Maya Tulen dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!