Memahami Warisan dan Permulaan Objek dalam C untuk Akses Fungsi Maya
Dalam C , warisan membolehkan penciptaan kelas terbitan yang mewarisi sifat dan tingkah laku daripada kelas asas. Walau bagaimanapun, susunan permulaan objek dalam C boleh memberi kesan bagaimana fungsi maya berkelakuan.
Soalan:
Apabila objek dibina dalam C dengan kelas asas yang mempunyai maya fungsi, mengapa fungsi itu berkelakuan tanpa diduga?
Jawapan:
Konsep utama di sini ialah susunan permulaan untuk kelas asas dan terbitan. Dalam C , kelas asas dibina sebelum kelas terbitan.
Penjelasan:
Dalam contoh yang disediakan:
Untuk membetulkan tingkah laku ini:
Untuk memastikan bahawa fungsi nilai() kelas terbitan dipanggil semasa pembinaan objek, anda harus memulakan kelas asas secara eksplisit dengan alamat contoh kelas terbitan:
derived example; base(&example).value()
Dengan menghantar alamat objek terbitan, anda mengarahkan pembina asas untuk memanggil fungsi value() pada objek terbitan, dengan berkesan "mematangkan" objek ke dalam bentuk terbitan lengkapnya .
Atas ialah kandungan terperinci Mengapa Fungsi Maya Berkelakuan Tidak Dijangka Semasa Permulaan Objek C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!