Dalam pengaturcaraan berorientasikan objek, fungsi maya ialah asas kepada tingkah laku polimorfik. Tetapi apa yang berlaku apabila kami memperkenalkan parameter lalai dalam fungsi maya dan memperoleh kelas baharu? Adakah kelas terbitan mewarisi lalai ini?
Parameter Lalai dan Warisan
Bertentangan dengan kepercayaan popular, fungsi maya menyokong parameter lalai. Walau bagaimanapun, parameter ini tidak disebarkan kepada kelas terbitan. Setiap kelas terbitan mengekalkan set parameter lalainya sendiri, bebas daripada kelas asas.
Menentukan Lalai Mana Yang Digunakan
Parameter lalai yang digunakan semasa panggilan fungsi maya ialah ditentukan oleh jenis statik objek yang dipanggil. Ini bermakna:
Gelagat Penyusun dan Amalan Disyorkan
Walaupun Piawaian C menentukan tingkah laku di atas, sesetengah penyusun mungkin melaksanakan perkara ini secara berbeza. Walau bagaimanapun, secara amnya disyorkan untuk:
Contoh Program
Untuk menunjukkan tingkah laku ini, pertimbangkan program berikut:
struct Base { virtual string Speak(int n = 42); }; struct Der : public Base { string Speak(int n = 84); };
Dalam contoh ini:
The output program ini dengan jelas menggambarkan bahawa parameter lalai yang digunakan ditentukan oleh jenis statik objek digunakan.
Kesimpulan
Fungsi maya dengan parameter lalai menawarkan fleksibiliti dalam C , tetapi memahami dinamik warisannya adalah penting. Dengan mematuhi amalan yang disyorkan, anda boleh memastikan gelagat polimorfik yang boleh diramal dan dikekalkan dalam aplikasi anda.
Atas ialah kandungan terperinci Bagaimanakah Parameter Lalai Berkelakuan dalam Fungsi Maya Diwarisi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!