Fungsi Maya dan Penggunaan Parameter Lalai
Dalam C , fungsi maya membenarkan kelas terbitan mengatasi pelaksanaan kelas asasnya dengan gelagat khusus mereka sendiri. Walau bagaimanapun, apabila ia berkaitan dengan nilai parameter lalai, peraturan untuk pewarisan berbeza daripada parameter biasa.
Nilai Parameter Lalai dalam Kelas Asas
Fungsi maya boleh mempunyai nilai parameter lalai dinyatakan dalam perisytiharan kelas asas mereka. Lalai ini tidak diwarisi oleh kelas terbitan. Sebaliknya, kelas terbitan mesti menentukan nilai lalainya sendiri atau meninggalkannya sama sekali.
Pemilihan Parameter Lalai
Apabila memanggil fungsi maya melalui objek kelas terbitan, parameter lalai nilai yang digunakan ditentukan oleh jenis statik penunjuk atau rujukan yang digunakan untuk memanggil fungsi. Jika panggilan dibuat melalui objek kelas asas atau penunjuk, nilai lalai kelas asas digunakan. Sebaliknya, jika panggilan dibuat melalui objek atau penuding kelas terbitan, nilai lalai kelas terbitan digunakan.
Contoh
Pertimbangkan contoh berikut:
struct Base { virtual void f(int a = 7); }; struct Derived : public Base { void f(int a = 9); };
Jika kita memanggil f() melalui penuding Base, ia akan menggunakan nilai lalai yang ditakrifkan dalam Base, iaitu 7. Walau bagaimanapun, jika kita memanggil f() melalui penuding Terbitan, ia akan menggunakan nilai lalai yang ditakrifkan dalam Terbitan, iaitu 9.
Pertimbangan Merentas Platform
Walaupun Piawaian C 03 dan C 11 menentukan tingkah laku yang diterangkan di atas, pengkompil yang berbeza mungkin mengendalikan pewarisan parameter lalai secara berbeza. Adalah disyorkan untuk sentiasa menentukan nilai parameter lalai secara eksplisit dalam kelas terbitan untuk mengelakkan sebarang potensi percanggahan.
Kesimpulan
Fungsi maya boleh mempunyai parameter lalai, tetapi lalai ini tidak diwarisi oleh kelas terbitan. Nilai lalai yang digunakan dalam panggilan fungsi maya ditentukan oleh jenis statik objek yang melaluinya fungsi itu dipanggil, memastikan kelas terbitan boleh menyesuaikan tingkah laku lalai mereka sendiri mengikut keperluan.
Atas ialah kandungan terperinci Bagaimanakah Nilai Parameter Lalai Berkelakuan dalam Fungsi Maya dan Warisan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!