Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Nilai Parameter Lalai Berkelakuan dalam Fungsi Maya dan Warisan C?

Bagaimanakah Nilai Parameter Lalai Berkelakuan dalam Fungsi Maya dan Warisan C?

Linda Hamilton
Linda Hamiltonasal
2024-11-24 17:35:12844semak imbas

How Do Default Parameter Values Behave in C   Virtual Functions and Inheritance?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn